- 可空类型:
- 在Kotlin中,类型默认是非空的。如果一个变量可以为空,需要在类型后面加上
?
来表示可空类型。
- 示例:
var name: String? = null
- 这里
name
变量被声明为String?
类型,意味着它可以存储null
值。如果声明为var name: String
,则不能赋值为null
,否则会编译错误。
- 安全调用操作符(?.):
- 用于在调用可能为空的对象的方法或属性时,避免空指针异常。如果对象为空,整个表达式返回
null
。
- 示例:
var str: String? = null
val length = str?.length
println(length) // 输出: null
- 在上述代码中,
str
可能为空,通过str?.length
,如果str
为空,length
就为null
,不会抛出空指针异常。
- 非空断言操作符(!!):
- 用于明确告诉编译器,开发者确定一个可空类型的变量不会为空。如果变量实际上为空,会抛出
NullPointerException
。
- 示例:
var str: String? = null
val length = str!!.length // 这里会抛出NullPointerException
- 这里使用
!!
,如果str
为空就会抛出异常,通常用于在经过某些逻辑判断后,确定变量不会为空的情况。但使用时需谨慎,因为一旦判断失误就会引发空指针异常。
- Elvis操作符(?:):
- 用于提供一个默认值,当可空对象为空时使用该默认值。
- 示例:
var str: String? = null
val result = str?: "default value"
println(result) // 输出: default value
- 这里如果
str
为空,result
就会被赋值为"default value"
。如果str
不为空,result
就会被赋值为str
的值。