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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章