# 1. ? 空值處理
在`Kotlin`中賦予了比較方便的空值處理,即`?`。可以在數據聲明的時候定義一個可空的變量,比如:
~~~
fun main() {
var a: Int // 非空變量
var b: String? // 可空變量
a = null // Null can not be a value of a non-null type Int
b = null
}
~~~
不能將`a`賦值為`null`,否則編譯無法通過。
# 2. ?. 安全調用符
`Kotlin`提供了一個安全調用符“`?.`”,專門用于調用可空類型變量中的成員方法或屬性,其語法格式為“`變量?.成員`”。其作用是判斷變量是否為`null`,如果不為`null`才調用變量的成員方法或者屬性。比如下面的案例:
~~~
fun main() {
var b: String? = null // 可空變量
println(b?.substring(2)) // null
b = "abc"
println(b?.substring(2)) // c
}
~~~
## 3. ?: 空合并操作符
可以在判斷“`變量?.成員`”的時候指定一個默認值,比如下面的案例:
~~~
fun main() {
var b: String? = null // 可空變量
println(b?.substring(2) ?: "abc") // abc
}
~~~
其實這種寫法有些類似于`Java`中的三目運算符。
## 4. !!. 非空斷言
語法結構為“`變量!!.成員`”,也就是類似`Java`中的`assert`進行斷言,如果不滿足條件就會返回一個異常。比如下面的案例:
~~~
fun main() {
var b: String? = null // 可空變量
println(b!!.substring(2)) // abc
}
~~~
結果:
```
Exception in thread "main" kotlin.KotlinNullPointerException
at com.kotlinLearn.KotlinDemoKt.main(KotlinDemo.kt:5)
at com.kotlinLearn.KotlinDemoKt.main(KotlinDemo.kt)
```
- Kotlin語言基礎
- Kotlin的簡介
- Kotlin的變量和常見數據類型
- Kotlin的區間
- Kotlin的位運算
- Kotlin的容器
- Kotlin類型檢查
- Kotlin的空值處理
- Kotlin的函數
- Kotlin的類
- Kotlin的委托
- Kotlin的延遲加載
- Kotlin的異常
- Kotlin的Lambda表達式
- Kotlin的高階函數
- Kotlin的標準庫中的高階函數
- Kotlin的泛型
- Kotlin的表達式
- Kotlin的解構
- Kotlin的運算符重載
- Kotlin語言中級
- Kotlin的擴展函數
- Kotlin的擴展屬性
- Kotlin的infix關鍵字
- Kotlin的DSL
- Kotlin的一些注解(和Java互調用)
- Kotlin的lateinit和by lazy
- Kotlin的反射
- Kotlin的匿名接口
- 安卓中的Kotlin
- 數據庫操作Room