定义一个可为空的变量b(String?),默认没有?是不可以为空的
var b: String? = "Kotlin"
b = null
print(b)
// 输出 null
默认不可为空
var a: String = "Kotlin"
a = null
// 编译器报错,null 不能被赋给不为空的变量
空安全调用(a?),相当于进行了判空操作
var a: String? = "Kotlin"
print(a.length) // 编译器报错,因为 a 是可为空的类型
a = null
print(a?.length) // 使用?. 的方式调用,输出 null
T 代表不可为空类型,编译器会检查,保证不会被 null 赋值
T? 代表可能为空类型
不能将 T? 赋值给 T
使用 instance?.fun() 进行空安全调用