可空类型:
在Kotlin中申明一个变量,如果类型后面不加?则不能直接给此变量赋值为null,在类型后面加上?就变成了可空类型,而可空类型可以直接赋值为null
如:
var name: String = null//Error:Null can not be a value of a non-null type String var name1: String? = null//可空类型,可以赋值为null
?. 就是当前面的变量!= nuil 时正常调用,如果为null就为null,
!! 就是当变量为null时,抛出空指针异常
如:
print(name1?.length) //当name1是null时,会输出null print(name1!!.length)//当name1是null是报npe(Null type error)错误
Elvis运算符 ?:
又称 null 合并运算符。
功能:
接受两个运算数,
若第一个运算数不为null,运算结果就是第一个运算数;
若第一个运算数为null,运算结果就是第二个运算数。
如:
var name: String? = null var nameLen: Int = name?.length ?: 0 //仅仅在左边的表达式结果为空时才会计算?:后面的表达式 println(nameLen)