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<String?> = listOf(null , null)
//该变量可以为null
var lotsofFish: list<String>? = null
//变量与元素都可以为null
var lotsofFish : List<String?>? = 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