数据类型转换可分为两种:**智能类型转换**和**强制类型转换**。
# 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