Kotlin中的問(wèn)號(hào)(?)和雙感嘆號(hào)(!!)主要用于處理空值,它們?cè)谔幚砜罩禃r(shí)的行為截然不同。
問(wèn)號(hào)(?)
空安全特性:在Kotlin中,問(wèn)號(hào)用于表示一個(gè)變量可以為null。當(dāng)變量為null時(shí),程序不會(huì)拋出空指針異常,而是繼續(xù)執(zhí)行后續(xù)的代碼。這種機(jī)制被稱為空安全(Null Safety)。
使用場(chǎng)景:
val list: List<String>? = null
println(list?.size) // 不會(huì)拋出異常,輸出null
雙感嘆號(hào)(!!)
強(qiáng)制非空:雙感嘆號(hào)用于表示一個(gè)變量必須非null。如果變量為null,程序會(huì)拋出?KotlinNullPointerException?異常。這種用法類(lèi)似于Java的空指針處理方式。
使用場(chǎng)景:
val list: List<String> = null
println(list!!.size) // 如果list為null,會(huì)拋出KotlinNullPointerException