kotlin的空安全

为什么需要空安全

在java中我们经常会因为一个变量没能正确判断是否非空而导致程序崩溃,java中需要我们去自己判断这个参数是否为空,但是在kotlin中会在编码的过程中保证是空安全的(并不是说不能为空,而是说如果是空的,那么会返回null,或者throwError),kotlin会通过不断爆红的方法去防止出现运行时因为空崩溃,虽然这种做法会使编码的过程更加困难,但是报错的bug肯定要比运行时bug好解决的多。

可空类型和非可空类型

在kotlin中变量默认是不能为空的
var string :String = null这个是会报错的,变成var string :String? = null在一个参数后面加入问号说明这是一个可空变量

null 和 空之间的区别

  • null 是指对象的指针指向了一个空的地方,这个指针指向了null,是安全的
  • 对象为空其实是指的一个对象没能初始化,在未声明一个变量lateinit的时候,JVM会自动为变量分配一个内存地址,但是没有初始化,如果在这个时候访问这个对象会导致访问空指针出现NPE问题(nullpointerError)

kotlin问号和双感叹号(?.和!!)

b?.length
如果 b 非空,就返回 b.length,否则返回 null
b!!
非空断言运算符(!!)将任何值转换为非空类型,若该值为空则抛出异常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容