Kotlin随笔 — Null安全性

Null安全性

1、定义变量

定义一个变量不能为null

var a: String = "abc"
a = null // 编译错误

若想要允许为null,可以声明一个可空的字符串,写作String?

var b: String? = "abc"
b = null // OK

2、安全调用 ?.

访问ab的方法/属性

val leng1 = a.length
val leng2 = b.length  //错误,b可为空

val leng3 = b?.length  //b是非空的返回长度,否则返回null

3、与空指针有关的几种操作符

(?.)操作符

val leng3 = b?.length  

//当b不为空时返回其长度,为空时返回null

(!!)操作符

val leng = b!!.length

//当b不为空时返回其长度,为空时报NPE

(?:)Elvis操作符

val l = b?.length ?: -1

//当b不为空时,执行"?."左边操作,返回b长度,为空是执行右边操作返回-1

(as?)安全转型操作符
对于有些数据强制转换会报ClassCastException 或者TypeCastException: null cannot be cast to ...,此时需要使用安全转型操作符as?

val aInt: Int? = a as? Int

注:空指针异常NPE:NullPointerException

你可能感兴趣的:(Kotlin)