? 与 ?.
在kotlin中默认变量是不可为空的,想要一个变量为空需加? 如下:
data class A(val a: String, val b: Int) {
fun print() {
println("test")
}
}
fun main() {
var a: A? = null
}
那么在代码中使用此变量就需要用到非空运算符?.如下
fun main() {
var a: A? = null
println(a?.print())
}
这里需要注意的是其实内部执行的代码是if(a != null){ a.print() }
也就是说print方法体并不会执行,实际使用时需要注意。
?:
非空运算符相当于一个判断是否为空的三目运算,看以下结果
代码:
fun main() {
var a :String? = "aaa"
println(a?:"it's null")
a = null
println(a?:"it's null")
}
结果:
aaa
it's null
as 与 is
as 类型转换符号
is JAVA中的instanceof
!!
强制类型为非空,此时如果类型为空会触发nullpointException