美文网首页
Kotlin 学习一

Kotlin 学习一

作者: 攻城狮xhb | 来源:发表于2017-06-05 16:10 被阅读0次

    一: val (常量) 和 var (变量)

    ① val 声明常量,只可以赋值一次。 var 声明变量,可以多次赋值。
    ② 尽量多使用 val(常量),能不使用var 就不使用 var。
    ③ Java 使变量不可变 final,只要可能,在Kotlin中首选时不变值。
    ④ 程序中使用不可变的变量,带来很多益处,如:可预测的行为和线程安全。
    ⑤ Kotlin中有趣的是大部分情况你不需要说明使用对象的类型,编译器就能推断它。

     如: var x = 7     或者    var x = "hello world"
    

    二: Kotlin中,所有都是对象

    ① 没有基本类型,没有void。如果有时没有返回值,实际时返回Unit对象。大多数情 况下,Uint可以省略,但是它确实存在的,被隐藏了。
    ② Kotlin 中的类型都是对 Java 基本类型的封装,因为 Kotlin 中不存在基本数据类型,所以不存在装箱拆箱的问题。
    ③ 需要注意的一点是,Kotlin 没有自动类型转换。隐式类型转换只发生表达式运算里,如果是传参的话必须显式转换。
    ④ Kotlin 不支持八进制数字的表示方法。

    三: 空安全

    在Kotlin中,类型系统将可空类型和不可空类型进行了区分,例如,String为不可空类型,String?为可空类型,如果将不可空类型赋值为null将会编译不通过。

    var a: String = "abc"
    a = null // compilation error
    var b: String? = "abc"
    b = null // compilation success
    

    对于不可空类型,可以直接调用它的成员变量或者函数,但是对应可空类型,直接调用成员变量或者函数将会编译不通过,相当于直接在语法层面解决做出了限制。

    var a: String? = "abc"
    val b = a.length  //compilation error
    

    上面的代码按理说没什么问题,但是编译不通过,就是因为String为可控类型,编译器不让它直接调用成员变量或者函数,对于可能类型,如果希望调用它的成员变量或者函数就必须进行判断才行,否则编译器是不会通过的,这就是Kotlin解决空指针异常的方法之道,它会最大限度的要求程序员去避免空指针异常。
    参考博客: http://blog.csdn.net/hp910315/article/details/50790681

    四:Kotlin 的基础数据类型

    ① 数字类型、字符类型、字符串类型和布尔类型。
    ② Char 类型并不是一个数字,它是一个真正的“字符”。

    问题一: 编译不通过 需要a.toLong()

    val a: Int? = 1      
    val b: Long? = a   
    print(a == b)     
    

    问题二: 字符串可以包含模板表达式
    模板表达式以$开头外加一个变量名或者一个用大括号包裹的常规表达式

    val s = "abc"
    val str = "$s.length is ${s.length}" // 计算得到 "abc.length is 3"

    相关文章

      网友评论

          本文标题:Kotlin 学习一

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