1、 ->
使用场景见:lambda表达式、函数类型、when
2、 !!
非空断言运算符,是处理可空类型值的工具,可以把任何值转换成非空类型。如果对 null 值做非空断言,则会抛出异常。
3、类型名称?
如 String?、Int? 等等
表示这个类型的变量可以存储 null 引用,即 Type? = Type or null
这也说明了所有常见类型默认都是非空的,除非显式地把它标记为可空
4、?.
安全调用运算符,允许你把一次 null 检查和一次方法调用合并成一个操作
例如:
s?.toUpperCase()
等同于
if(s!=null){
return s.toUpperCase()
}else{
return null
}
5、?:
Elvis 运算符 或者 null 合并运算符
Elvis 运算符接收两个运算数,如果第一个运算数不为 null,运算结果就是第一个运算数;如果第一个运算数为 null,运算结果就是第二个运算数。
s ?: "" //如果 “s” 为 null,结果是一个空的字符串
foo ?: bar //foo!=null,结果为 foo;foo==null,结果为bar
6、 as?
安全转换运算符,用来转换类型,尝试把值转换成指定的类型,如果值不是合适的类型就返回 null。在Kotlin中,父类是禁止转换为子类型的。
o as? Person ?: return false