kotlin练习 - Kotlin中的【 ?,?.,?:,!! ,filterNotNull 】含义

kotlin练习 - Kotlin中的【 ?,?.,?:,!! ,filterNotNull 】含义

? 可空类型,表示当前是否对象可以为空

1
2
var a:String ="123"
a = null //编译报错
1
2
var a:String? ="123"
a = null //编译通过

?. 安全调用操作符

1
2
3
4
var a:String? ="123"
a = null //编译通过
val length = a.length //编译报错 --- 变量"a"可能会为空
val length = a?.length //编译通过 --- 如果 a 非空,就返回 a.length,否则返回 null

?: Elvis 操作符

1
2
3
var a:String? ="123"
a = null //编译通过
val lenght = a?.length?:-1 // 当a不为空时,返回a.length,当a为空时,返回-1

!! 操作符,表示当前对象不为空的情况下执行,为空就抛出异常

1
2
3
var a:String? ="123"
a = null //编译通过
val lenght = a!!.length //如果a不为空,则返回a.length,如果b为空,则抛出异常 NullPointerException

filterNotNull 过滤非空元素

1
2
3
val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
println(intList.toString())//[1, 2, 4]