这篇讨论的仅仅是kotlin的安全性
1.简洁
这个从直观上很容易看到.
简洁就意味着实现相同的功能,kotlin 可以用更少的代码.因为 java 的语法相对来说比较负责,所以说编写更长的代码更容易出现更多的错误
2.null 安全
用 java 来开发的,应该见的最多的就是 NullPointerException了.
而要解决这个问题,有两种方法
1)在每次引用对象的时候对其进行非空的判断
2)通过一些手段(代码监测,编译检查等)来强制对象不为空
而在这一方面 java 对 null 的要求并不严格,需要开发者自行判断.so 代码一旦复杂起来,这就是一件麻烦事儿了.
而 kotlin 就是将以上的两种解决null 的方法结合起来了
一方面它可以声明一定不为空的对象,而另一方面它也允许声明可以为空的对象
对于声明为不为空的对象,kotlin 执行严格的代码检测来保证任何时候该对象都不会被赋值为 null,也就是说在编译期就帮你搞定这个问题.
对于声明为可以为空的对象,你可以随时随地的将 null 值赋给该对象,但是代价就是在你每次使用该对象的时候都需要手动的进行非空的判断,即使如下的代码也不例外
因为你既然可以为它赋值为”aaa”,你同样也可以为它赋值为 null.所以在每次使用的时候都需要进行非空的判断,也就是使用?
var str: String? = null
private fun testA(){
str = "aaa"
print(str?.length)
}