1、在kotlin中是不允许直接为空的,如:
var a:String = null
2、但是有些变量确实会存在空,那就要特殊标记允许为空
如果a真的可能为空那就再声明的时候用问号?标记如:
var a:String? = null ?的意思就是可为空
3、安全的调用
那如果调用a.length方法就可能空指针。编译器会在编译阶段就报错,我们就要做非空检测
if(a!=null) a.length
这种事显式的检测。那么隐式的就是安全的调用 ?.
如:
a?.length
意思就是如果a非空就直接调length,a为空就直接返回null
4、Elvis 操作符 ?:
类似于java中的三元运算符
a?.func() ?: print( "左边空啦")
意思就是如果?:左边出现空指针,那么就执行右边的表达式。
5、!! 操作符
如果我就非得遇到空指针,强行用null来调用方法,那么就用双感叹号!!标记
a!!.length
6、安全的类型转换
val b = a as String //把a进行类型转换,但有可能a不是String的子类对象,那么就会报类型转换异常
val b:String ? = a as? String //这样如果转换失败就返回null
7、等号操作符
= //赋值
==//判断值是否相等
===//判断内存地址是否相等
不仅可判断整形,字符串,对象都可以判断。这点和java很大不同。