Kotlin学习(三)之--?. ?: 以及断言符 和 == ===的区分

一.
xx ?. ----> 非null 则执行 ?. 后面的逻辑
xx ?: -----> null则执行 ?: 后面的逻辑
xx !!. ------> 断言符,不管是否为null 都一定执行 !!. 后面的逻辑

 println(name?.let { "$it" } ?:"我是null") 
 //name为null则返回"我是null",否则返回它自己
println(name!!.let { "$it" }) 
//不管name是不是null都执行函数,不过当为null的时候则报空指针错误

二.

==  相当于Java的 equals,只要内容相等就返回true
=== 相当于Java的 ==, 当引用的对象为同一个时才返回 true,即地址也要相同
    var name1 : String ?= "ALLEN"
    var name2 = "ALLEN"
    var name3 = "allen".toUpperCase()
    println(name1 == name2) //true
    println(name1 == name3) //true
    println(name1 === name3) //false