Kotlin基础教程-类型检查和自动转换

来源:互联网 发布:坏家伙的全盛时代 知乎 编辑:程序博客网 时间:2024/06/05 14:13

类型检查和自动转换

类型判断

is/!is表达式

if (obj is String) {    print(obj.length)}if (obj !is String) { // same as !(obj is String)    print("Not a String")}else {    print(obj.length)}

智能转换

kotlin具有自动转换类型的功能,在is/!is表达式,会根据判断的结果走向的不同语句块,相应只能转换类型

if 语句

fun demo(x: Any) {    if (x is String) {        print(x.length) // x is automatically cast to String    }    x.length//编译器报错}

这里写图片描述

上面的if条件内部的x是可以直接调用String的方法length的。而外部的x不可以。

||&&操作中也有智能转换

if (x !is String || x.length == 0) return//如果x!is String判断失败,说明x是String类型,这个时候会自动转换为String  if (x is String && x.length > 0)      print(x.length)   //如果x is String判断失败,就直接返回了,不会执行&&后面的。但是判断成功后,会自动转化为String

when

when (x) {    is Int -> print(x + 1)    is String -> print(x.length + 1)    is Array<Int> -> print(x.sum())}

不安全的转换符

fun check(y: Int?) {    val x: String = y as String}fun main(args: Array<String>) {    val y: Int? = null    check(y)}

如果传入的ynull,那么上面的y as String就会报错。

这里写图片描述

安全转换符

as ?

fun check(y: Int?) {    val x: String ? = y as? String    println(x)}
原创粉丝点击