定義一個可為空的變量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() 進行空安全調用