Kotlin中 和 !! 的区别,?和?:使用
!!是强制执行
? 对象为空不执行
在 Kotlin 编程语言中,!!
和 ?
是与可空性(nullability)相关的操作符,它们用于处理可能为 null
的变量。
-
!!
操作符:非空断言操作符
当你对一个可空类型的变量使用!!
操作符时,你是在告诉编译器这个变量在此处一定不会为null
。如果变量确实为null
,那么使用!!
会导致程序抛出一个NullPointerException
。这是一种危险的操作,因为它可能会引入运行时错误,所以应该谨慎使用。例如:
val name: String= null println(name!!.length) // 这会抛出 NullPointerException
-
?
操作符:安全调用操作符
?
用在变量类型声明时表示变量可以持有null
值。而在变量后面使用?
表示安全调用操作符,它允许你在不确定一个变量是否为null
的情况下,安全地调用其方法或访问其属性。如果变量为null
,那么系统不会执行后续的方法调用或属性访问,而是直接返回null
。例如:
val name: String= null println(name?.length) // 这不会抛出异常,输出为 null
综上所述,!!
是一种断言,用于告诉编译器变量不可能为 null
;而 ?
是一种安全检查,允许你在可能为 null
的变量上进行操作而不会抛出异常。在实际编程中,建议尽量避免使用 !!
,以减少潜在的运行时错误。