Kotlin中的问号(?)和双感叹号(!!)主要用于处理空值,它们在处理空值时的行为截然不同。
问号(?)
空安全特性:在Kotlin中,问号用于表示一个变量可以为null。当变量为null时,程序不会抛出空指针异常,而是继续执行后续的代码。这种机制被称为空安全(Null Safety)。
使用场景:
val list: List<String>? = null
println(list?.size) // 不会抛出异常,输出null
双感叹号(!!)
强制非空:双感叹号用于表示一个变量必须非null。如果变量为null,程序会抛出 KotlinNullPointerException 异常。这种用法类似于Java的空指针处理方式。
使用场景:
val list: List<String> = null
println(list!!.size) // 如果list为null,会抛出KotlinNullPointerException