null
- 在Java中我们常见的空指针异常NullPointerException,带给我们很多麻烦。Kotlin作为强大的语言,势必会基于以往的语言设计经验对其进行改良。Kotlin更多地把运行时可能会出现的null问题,以编译时错误的方式,
提前在编译期强迫我们重视起来,
而不是等到运行时报错,防范于未然,提高了我们程序的健壮性。
可空性
- 对于null值问题,Kotlin反其道而行之,
除非另有规定,变量不可为null值,
这样一来,运行时崩溃从根源上得到解决。
fun main(){
val str = "butterfly"
str = null
println(str)
}
Kotlin的null类型
- 为了避免NullPointerException,Kotlin的做法是不让我们给非空类型变量赋null值,但null在Kotlin中依然存在。
fun main(){
var str:String? = readLine()
str = null
printlin("input:$str")
}
null安全
- Kotlin区分可空类型和非可空类型,所以你要一个控股类型变量运行,而它又可能不存在,对于这种潜在的危险,编译器时刻警惕着。为了应对这种风险,Kotlin不允许你在可空类型值上调用函数,除非你
主动接手安全管理。
fun main(){
val str:String = readLIne().capitalize()
println(str)
}