美文网首页
Kotlin学习笔记

Kotlin学习笔记

作者: 忘尘And | 来源:发表于2018-07-13 17:28 被阅读0次

    lateinit 和 by lazy的区别:

    是kotlin里面的延迟初始化实现,
    1.lateinit 只用于变量 var,而 lazy 只用于常量 val
    2.lateinit可以在任何位置初始化并且可以初始化多次。而lazy在第一次被调用时就被初始化,想要被改变只能重新定义
    3.lazy 应用于单例模式(if-null-then-init-else-return),当且仅当变量被第一次调用的时候,想要被改变只能重新定义,委托方法才会执行(有点类似懒加载);lateinit可以在任何位置初始化并且可以初始化多次。
    4.lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate()

    变量?和!!

    ? :定义变量时,可在类型后面加一个问号?,表示该变量是Nullable,不加表示该变量不可为null(不加?编译的时候默认先执行非空判断)。对于可以为null的变量,在使用该变量的时候,必须用变量名+?(如上面的s?)的形式进行调用,表示如果该变量为null,则不执行该变量调用的方法
    ! : 表示当前对象不为空的情况下执行

    val与var

    var:定义可变变量
    val :定位常量,java里面的final

    open关键字

    open 注解与java 中的 final相反:它允许别的类继承这个类。默认情形下,kotlin 中所有的类都是 final ,open用来表示他可以被集成

    ==和===区别

    1.Referential/引用相等(两个引用指向同一对象): ===(否定形式!==)是对象引用(地址),即判断是否同一个对象!
    2.Structural/结构相等(用equals()检查): ==(否定形式!=)是通过equals()函数进行比较!

    let,apply,with,run函数区别

    https://www.jianshu.com/p/28ce69d58fea

    Kotlin集合

    https://blog.csdn.net/xsg2357/article/details/80417980
    https://www.jianshu.com/p/6d95db6e9f87

    相关文章

      网友评论

          本文标题:Kotlin学习笔记

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