Kotlin是如何避免空指针异常的

1. 默认情况下变量不可为null

var rocks:Int = null //error: null can not be a value of a non-null type Int

2. 给类型添加?表示可以为null

var marbles: Int ? = null //编译成功

3. 复杂的引用类型指定元素或该变量是否可为null

//元素可以为null
var lotsofFish : list = listOf(null , null)
//该变量可以为null
var lotsofFish: list? = null
//变量与元素都可以为null
var lotsofFish : List? = listOf(null , null)

4. 保留空指针异常

可以在变量上加!!来保留空指针异常

image.png

使用!! 不是一个好主意, 这也是为什么kotlin需要你敲两个!

5. ?:操作符 进行null测试

?: 用来指定如果值为null时表达式的值

var a : Int? = null
a?.dec() ?:0 //因为a为null所以返回0
a = 3
a?.dec() ?:0 // 因为a为3 不为null所以返回 2

你可能感兴趣的:(Kotlin是如何避免空指针异常的)