美文网首页
Kotlin学习笔记(一)—— Kotlin基础

Kotlin学习笔记(一)—— Kotlin基础

作者: CoderCyl | 来源:发表于2019-12-05 21:44 被阅读0次
    数据类型

    基本类型和Java基本保持一致,只是Kotlin中是大写首字母

    Char
    Byte 
    Short 
    Int 
    Long 
    Float 
    Double 
    Boolean
    

    Kotlin不支持自动扩展数字范围,Java中int类型可自动扩展成long,但是Kotlin中必须要显式的指定类型。

    val intValue = 10
    val longValue = intValue.toLong()
    

    其他类似的还有toDouble toShort toByte等方法

    上面第一行代码中没有显示的指定数据类型,Kotlin可以根据指定的值推断出类型,由此可知上面的intValue的类型是Int。

    元组

    元组只有二元(Pair)和三元(Triple),因此也只能存放2个值和3个值

    val pair = Pair("one", "two")
    print(pair.first + " - " + pair.second)
    
    val triple = Triple("one", "two", "third")
    print(triple.first + " - " + triple.second + " - " + triple.third)
    
    可空类型

    Java中的最常见的一个异常就是NullPointerException,Kotlin的可空类型完美的避免了每次繁琐的判空处理。可空类型表示它的值可以声明为null,用类型后面加一个?表示,如:

    val string: String? = null // ①
    val string2: String = null // ②
    

    上面①的声明是正确的,但是②的声明是错误的,IDE会提示 Null can not be a value of a non-null type String,说明没有带?的变量是不能声明为null的。

    声明3个变量分别是 s1,s2,s3,将3个变量转换成大写

    val s1: String = "Kotlin"
    val s2: String? = null
    val s3: String
    
    println(s1.toUpperCase())
    println(s2?.toUpperCase())
    println(s3.toUpperCase()) // IDE报错Variable 's3' must be initialized
    
    KOTLIN
    null
    

    声明s1并赋值为小写字符串kotlin,声明s2但是初始化为null,声明s3不初始化。

    s1可将 kotlin 转成 KOTLIN;s2初始化为null,直接输出了null,而没有像Java那样报NPE异常;s3声明不报错,但是s3.toUpperCase()的时候IDE编译不通过。这说明:

    • 声明可以不立马初始化
    • String?是空类型安全的,即使是初始化为null,依旧不报错,而是返回null
    • 对于未初始化的变量不能使用
    相等操作符

    == 和 ===

    判断引用是否相等用 ===

    判断值是否相等用 ==

    val s1 = "Kotlin"
    val s2 = "Kotlin"
    println(s1 == s2)
    println(s1 === s2)
    
    >> true
    >> true
    

    因为s1和s2的字符串在常量池中指向的是同一个引用,所以引用和值都返回true

    val f1 = File("sdcard/")
    val f2 = File("sdcard/")
    println(f1 == f2)
    println(f1 === f2)
    
    >> true
    >> false
    

    f1和f2虽然是相同的路径,但是是不同的对象,所以指向了不同的引用,因此 === 返回false,路径值相同,因此 == 返回true。

    区间

    区间是一个有开始值和结束值的范围。创建一个区间用 .. 操作符

    val range = 1..100
    

    range的范围等同于 1 <= range <= 100

    遍历区间
    for (num in range) {
        println(num)
    }
    
    >> 1
    >> 2
    ...
    >> 100
    
    区间反转
    val reversedRange = range.reversed()
    for (num in reversedRange) {
        println(num)
    }
    
    >> 100
    >> 99
    ...
    >> 1
    
    步长

    默认的步长是1,也可以设置步长,用step(Int)

    val range = 1..100
    for (num in range.step(3)) {
        println(num)
    }
    
    >> 1
    >> 4
    ...
    >> 100
    

    相关文章

      网友评论

          本文标题:Kotlin学习笔记(一)—— Kotlin基础

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