美文网首页
笔记:kotlin学习第一天

笔记:kotlin学习第一天

作者: s酸菜 | 来源:发表于2018-07-11 09:53 被阅读0次
  1. kotlin - HelloWorld
fun main(args: Array<String>) {
    println("hello world")
}
  1. kotlin - 基本数据类型:var 定义变量
fun main(args: Array<String>) {
    //定义Boolean类型变量
    var b:Boolean = false
    var byte:Byte = 10
    var int:Int =  20
    var long:Long = 40
    var char:Char = 'a'
    var double:Double = 1.1234567
    var float:Float = 1.1234567f
    var short:Short = 10

    println(b)
} 
  1. kotlin - 与Java数据类型的对比:hashCode()
fun main(args: Array<String>) {
    var a:Int = 10
    //基本数据类型
    var b:Int = a+10
    //调用hashcode
    val hashCode:Int = a.hashCode()

    println(hashCode)
}
  1. kotlin - 基本数据类型的取值范围:MAX_VALUE MIN_VALUE
fun main(args: Array<String>) {
    //Short类型取值范围
    var maxShort:Short = Short.MAX_VALUE
    var minShort:Short = Short.MIN_VALUE
  
    var maxByte:Byte = Byte.MAX_VALUE
    var minByte:Byte = Byte.MIN_VALUE

   var maxInt:Int = Int.MAX_VALUE
    var minInt:Int = Int.MIN_VALUE

    var maxLong:Long = Long.MAX_VALUE
    var minLong:Long = Long.MIN_VALUE

    var maxFloat:Float = Float.MAX_VALUE
    var minFloat:Float = -Float.MAX_VALUE//最小值
  
       var maxDouble:Double = Double.MAX_VALUE
    var minDouble:Double = -Double.MAX_VALUE//最小值
}
  1. kotlin - 调用Java:BigDecimal类调用
fun main(args: Array<String>) {
    //1.123456789123456789
    //存钱
    var money:Double = 1.123456789123456789
    //取钱
    println(money)


    //银行存钱
    var bigDe:BigDecimal = BigDecimal("1.123456789123456789")//省略new关键字
    //取钱
    println(bigDe)

}
  1. kotlin - 智能类型推断和类型转换:var b = 10
fun main(args: Array<String>) {
    var a: Int = 10

    /*---------------------------- kotlin智能类型推断 ----------------------------*/
    //类型安全的语言:类型一但确定,不再改变了
    //kotlin编译器推断出Int类型
    var b = 10

//    var g
//    var c:Byte = 10
    var e = 10L//long

//    b = 20
//    b = "a"

    var c = "张三"
    var d = 'a'

    /*---------------------------- 类型转换 ----------------------------*/
    // 10   "10"
/*---------------------------- String和int类型转换 ----------------------------*/
    //to转换基本数据类型
    var m = 10
    var s = "10"
    println(s.toInt())
    s.toByte()
    /*---------------------------- int类型和long类型转换 ----------------------------*/
    //不同的数据类型不能相互赋值
    //kotlin数据类型可以通过to方法进行相互转换
    var u = 10
    var v = 10L
    v = u.toLong()//Int赋值给Long类型
    u = v.toInt()//Long赋值给Int类型

    //kotlin                    java                    js
    //最严格的类型检查        只能小的赋值给大的     最宽松
}
  1. kotlin - 可变变量和不可变变量:var val
/**
 * 项目开发中尽量使用val  实在不能使用val再使用var
 */
//可以通过反射修改里面的值
const val b:Int = 20
fun main(args: Array<String>) {
    //可变变量
    var a:Int = 10
    a = 20
    //不可变变量
    val d = 20
   

//    b = 30
}
  1. kotlin - 字符串:“广东省” “““广东省””” .trimIndent()
/**
 * 广东省
 * 深圳市
 * 宝安区
 */
//模板性
fun main(args: Array<String>) {
    /*---------------------------- 普通字符串 ----------------------------*/
//    val place1 = "广东省深圳市宝安区"
////    println(place1)
//    //换行
//    val place2 = "广东省\n深圳市\n宝安区"
////    println(place2)
//    val place3 = "广东省" +
//            "深圳市" +
//            "宝安区"
////    println(place3)
//    //怎样写怎样输出?
    /*---------------------------- 原样输出字符串 ----------------------------*/
    val place4 = """
        广东省
        深圳市
        宝安区
    """.trimIndent()

    println(place4)
}
  1. kotlin - 字符串删除空格:trim()、trimMargin()
fun main(args: Array<String>) {
    /*---------------------------- 普通字符串删除空格 ----------------------------*/
    val str = "  张三   "
    val newStr = str.trim()
//    println(newStr)
    /*---------------------------- 原样输出字符串 ----------------------------*/
    val str2 = """
        /张三
        /李四
        /王五
    """.trimMargin("/")
    println(str2)
}
  1. kotlin - 字符串的比较:== 、 equals 、 ===

    fun main(args: Array<String>) {
        val str1 = "abc"
        val str2 = String(charArrayOf('a','b','c'))
        //equals  比较值  true
        println(str1.equals(str2))
        //== 比较的也是值
        println(str1 == str2)
    
        //=== 比较地址值 false
        println(str1 === str2)
    }
    
  2. kotlin - 字符串切割:split(a,b) 多条件切割

    fun main(args: Array<String>) {
        val str = "张三.李四-王五"
        //多条件切割
        val result = str.split(".","-")
        println(result)
    }
    
  3. kotlin - 字符串截取:substring() 以及重载方法

    fun main(args: Array<String>) {
        val path = "/Users/yole/kotlin-book/chapter.adoc"
        //获取前6个字符
    //    println(path.substring(0, 6))
        println(path.substring(0..5))//0到5
        //把第一个r之前的字符截取
        println(path.substringBefore("r"))
        //把最后一个r之前的字符截取
        println(path.substringBeforeLast("r"))
        //把第一个r之后的字符截取
        println(path.substringAfter("r"))
        //把最后一个r之后的字符截取
        println(path.substringAfterLast("r"))
    }
    
  4. kotlin - 二元元组:pair 、 triple

    fun main(args: Array<String>) {
        //定义二元元组 姓名  年纪
    //    val pair = Pair<String,Int>("张三",20)
        val pair = "张三" to 20
    //    println(pair.first)
    //    println(pair.second)
    
        //三元元组
        val triple = Triple<String,Int,String>("李四",20,"15456678")
        println(triple.first)
        println(triple.second)
        println(triple.third)
    
    //    1/0
    }
    
  5. kotlin - 空值处理:?. ? !! ?:

    /**
     * val str:String 非空类型 不能赋值为null
     * val str: String? 可空类型 可以赋值为null
     *
     * 空安全调用符:?.
     * 空值处理的运算符
     * 可空类型  Int?
     * 关闭空检查  a!!
     * 空安全调用符 a?.toInt
     * Elvis操作符  ?:
     */
    //swift
    fun main(args: Array<String>) {
        //10   "10" 可空类型
        val str: String? = null
        //转换为Int类型
        //告诉编译器  不要检查了  我一定不为空  还是可能为空  不建议使用
    //    str!!.toInt()
        //空安全调用符 返回的值其实就是可空类型
    //    str?.toInt()
    
    //    Int?
    //    if(str!=null){
    //        return str.toInt()
    //    }else{
    //        return -1;
    //    }
    //    Int?
        val b:Int = str?.toInt()?:-1
    //    if(str!=null){
    //        return str.toInt()
    //    }else{
    //        return -1
    //    }
        println(b)
    
    }
    
  6. kotlin - 人机交互:readLine()

    fun main(args: Array<String>) {
        //输出数据
        val a = 10
    //    println(a)
    
        //m+n
        var m:Int
        var n:Int
        //从控制台输入m和n
        m = readLine()?.toInt()?:-1
        n = readLine()?.toInt()?:-1
    
        println("m+n=" + (m + n))
    }
    
  7. kotlin - 自定义函数:有无参数和返回值

    fun main(args: Array<String>) {
    //    sayHello("张三")
        println(getLength("张三"))
    }
    //无参无返回值
    fun sayHello(){//返回值
        println("hello")
    }
    //有参无返回值
    fun sayHello(name:String){
        println("hello "+name)
    }
    //有参有返回值
    fun getLength(name:String):Int{
        return name.length
    }
    //无参有返回值
    fun get():String{
        return "hello"
    }
    
  8. kotlin - 顶层函数和嵌套函数:一等公民、独立于对象单独存在

    //函数式编程  函数式一等公民 函数可以独立于对象单独存在
    //顶层函数
    fun main(args: Array<String>) {
        //嵌套函数
        fun sayHello(){
            println("hello")
        }
        sayHello()
    }
    //顶层函数
    fun haha(){
    
    }
    
  9. kotlin - 字符串模板:${ place }

    fun main(args: Array<String>) {
        val result = createDiary("天安门")
        println(result)
    }
    //生成日记模板
    fun createDiary(place:String):String{
    //    val result = "今天天气晴朗,万里无云,我们去"+place+"游玩,首先映入眼帘的是,"+place+place.length+"个镏金大字"
        val result = "今天天气晴朗,万里无云,我们去${sayHello1()} 游玩,首先映入眼帘的是,${place}${place.length}个镏金大字"
        return result
    }
    fun sayHello1():String{
        return "halleo"
    }
    
    
  10. kotlin - 条件控制语句if:if语句有返回值,没有三元运算符

    /**
     * kotlin的if语句有返回值的  java if语句是没有返回值的
     * switch when表达式
     * kotlin一般都有返回值(函数式编程 闭包)
     */
    fun main(args: Array<String>) {
        val a = 10
        val b = 20
        //找到a和b中最大值
        val max = max(a, b)//Ctrl+Alt+L
        println(max)
    }
    
    //求最大值
    //kotlin没有三元运算符
    fun max(a: Int, b: Int): Int {
        return if (a > b) {
             a
        } else {
             b
        }
    }
    //如果只有一行 可以去掉{}
    //fun max(a: Int, b: Int): Int {
    //    if (a > b)
    //        return a
    //     else
    //        return b
    //}
    //最终精简
    //fun max(a: Int, b: Int): Int {
    //    return if (a > b) a else b
    //}
    
    

相关文章

网友评论

      本文标题:笔记:kotlin学习第一天

      本文链接:https://www.haomeiwen.com/subject/zjwcpftx.html