數據類型轉換可分為兩種:**智能類型轉換**和**強制類型轉換**。
# 1. 智能類型轉換
`Kotlin`編輯器非常智能,它能識別`is`和`!is`操作符,通過這兩個操作符,能判斷出當前對象是否屬于`is`或者`!is`后面的數據類型。如果當前對象屬于`is`后面的數據類型,則在使用該對象時可以自動進行智能類型轉換。
對于`is`或者`!is`的用法可以看下面的示例:
~~~
fun main() {
var a = arrayOf("Hello", "Bold", "!")
println(a is Array)
}
~~~
結果輸出`true`。在`Kotlin`中我們可以定義一個`Any`的數據類型,類似于在`Java`中的`Object`對象。比如下面的智能類型轉換案例:
~~~
fun main() {
var a: Any = arrayOf("Hello", "Bold", "!")
println(a is Array<*>)
}
~~~
結果還是`true`。
# 2. 強制類型轉換
這個部分的內容在前面《`Kotlin`的變量和常見數據類型》處介紹過,但是前面的部分過于單一。在`Kotlin`中提供了`as`操作符來完成:
~~~
fun main() {
var a_1: Any = arrayOf(1, 2, 3)
var a_2: Any = 123
var b_1 : Array<*>? = a_1 as? Array<*>
var b_2 : Array<*>? = a_2 as? Array<*>
if (b_1 != null) {
for (any in b_1) {
println(any)
}
}
if (b_2 != null) {
for (any in b_2) {
println(any)
}
}
}
~~~
`as?`可以用來判斷是否轉換成功,成功返回轉換后數據,否則返回`null`。
- 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