Null——Kotlin基础

一、可null类型

为了避免java中经常出现的NullPointerException问题,Kotlin引入了对null的控制。
我们以整型为例。

  • Int则一定不为null,使用其方法或属性时,可以正常调用
  • 而Int?则有可能为null使用式,使用时需要进行先判空,否则无法正常调用其属性或方法

包括Boolean?类型,也不能直接用作分支判断。 使用时需要用if(b == true)进行判断,因为此时的b的取值包括:truefalsenull

var b:Boolean? = true
if(b == true){
    println("b is ${b}")
}

二、安全调用

使用 ? 可进行安全调用。例如

var str2: String? = "zincPower"
// 无法直接调用
// println(str2.length)
// 只有当str2不为null时,则会调用length,得到长度,否则返回null
println(str2?.length)

str2 = null
// 返回null,不会NullPointerException
println(str2?.length)

在这里插入图片描述
使用 let 操作符,进行安全调用需要的代码逻辑

str2 = "jpy"
// 会调用后续的代码逻辑
str2?.let {
println("My name is $str2.")
}
str2 = null
// 后续的代码逻辑不会被调用
str2?.let {
    println("My name is $str2.")
}

在这里插入图片描述

三、Elvis 运算

对 if 分支的简化,即?:,当?:不为null,则返回?:左边的表达式,否则返回?:右边表达式。

var str3:String? = "XPY"
println(str3?:"It's null")
str3 = null
println(str3?:"It's null")

在这里插入图片描述

四、强制调用

使用!!.则可以忽略变量是否需要进行检测null。但有可能会引起NullPointerException

str3:String? = null
str3!!.length
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章