🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
数据类型转换可分为两种:**智能类型转换**和**强制类型转换**。 # 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`。