- Kotlin系列
0.【翻譯】Using Kotlin for Android Development
1.Kotlin入門(mén)(一):變量的聲明和使用
2.Kotlin入門(mén)(二):方法的定義和使用
3.Kotlin入門(mén)(三):if, when, for, while
4.Kotlin入門(mén)(四):null安全(“?”,“?:”捎稚,“!!”)
5.Kotlin入門(mén)(五):類(lèi)與繼承
6.Kotlin入門(mén)(六):內(nèi)聯(lián)方法
7.Kotlin入門(mén)(七):enum乐横,data求橄,sealed,object
在Java開(kāi)發(fā)中葡公,null一直是個(gè)大問(wèn)題罐农,哪怕我們?cè)傩⌒模搽y免有疏忽的時(shí)候催什,Kotlin針對(duì)這個(gè)問(wèn)題做了一些措施涵亏。
Kotlin將變量分為可以為Nullable類(lèi)型 Non-Null類(lèi)型,變量在聲明時(shí)就要確定屬于哪個(gè)陣營(yíng)蛆楞。
變量默認(rèn)Non-Null類(lèi)型溯乒,如果想聲明Nullable的變量,需要用“?”修飾:
- 聲明Non-Null變量
var a: String = "hello"
- 聲明Nullable變量
var b: String? = "world"
-
聲明變量時(shí)若直接賦值豹爹,變量類(lèi)型由所賦值的類(lèi)型決定
如在聲明b時(shí)裆悄,將a賦值給b,b的類(lèi)型(Nullable或Non-Null)與a相同:
var a: String? = "hello" //Nullable
var b = a //與a相同臂聋,也是Nullable
Non-Null變量賦值
- Non-Null變量不能賦值為null
var a: String=null //報(bào)錯(cuò):Null can not be a value of a non-null type String
- Nullable變量無(wú)法直接賦值給Non-Null變量
var a: String? = "hello"
var b = "world"
b = a //報(bào)錯(cuò):Type mismatch: inferred type is String? but String was expected
想要將Nullable變量賦值給Non-Null變量有以下方法:
- 先處理后賦值
var a: String? = "hello"
var b = "world"
if (a != null) {
b == a
}
- 使用“!!”
var a: String? = "hello"
var b = "world"
b = a!!
使用“!!”方法要注意光稼,當(dāng)a為null時(shí)會(huì)拋出KotlinNullPointerException異常。
Nullable變量的使用
-
“?”符號(hào)的使用
Nullable變量進(jìn)行操作時(shí)要帶“?”孩等,當(dāng)變量為null時(shí)艾君,不會(huì)出現(xiàn)異常,而是返回結(jié)果null:
var name: String? = null
var len = name?.length
print(len == null) //輸出:true
-
“?:”符號(hào)的使用
這個(gè)符號(hào)的作用是當(dāng)它左邊的結(jié)果為null時(shí)肄方,進(jìn)行右邊的操作冰垄。
左邊結(jié)果不為null:
var a: String? = "hello"
var b = a?.length ?: 100 //很明顯左邊不為null
println(b) //輸出: 5
左邊結(jié)果為null:
var a: String? = null
var b = a?.length ?: 100 //左邊為null,返回右邊的100
println(b) //輸出: 100