对于,android 开发人员而言,kotlin的出现给我们带来了福利。
(1)可以减少android开发的代码量
(2)kotlin语言也可应用于js中
(3)后台肯定能使用kotlin进行开发
但,我的这边博客以及后续的kotlin博客肯定不会讲什么基础的,只是讲一些比较细节的东西,这样你们看kotlin官方文档就很简单了。
那,下面我们先来看看,kotlin的 空安全。
在kotlin中,空安全,我们肯定先想到的是 “?”,我们依次来看下面这些例子:
var name: String = "lihuan"
name= null // 编译报错:null 不能作为一个非空类型的值
var nickName: String? = "jimTrency"
nickName = null // 编译成功
从而,我们可以知道,想要一个变量为空类型,在对应的位置加个 “?”即可。
var name: String ?= "lihuan"
var l = name.length //编译报错
这是为什么呢?因为你的name 可以为空,所以name.length 可能会报空指针异常,当然在kotlin中肯定是不允许的,这么解决呢?看下面代码
//编译成功,若name为空,l=null;否则l=name.length
var l = name?.length
下面我们再来看看,这一句代码什么意思:
var name: String ?= "lihuan"
val l = name?.length ?: -1
意思是:若name不为空,l = name.length,否则:l = -1
即:java写法为:
if(name!=null){
l = name.length;
}else{
l = -1;
}
ps: ” ?: ” 为Elvis操作符,如果 ?: 左边表达式非空,elvis操作符就会返回左边的结果,否则返回右边的结果
接着,我们再来看看一种写法:
var name: String ?= "lihuan"
var l = name!!.length //编译通过
“ !! ”,这是你告诉编译器,name肯定不为空。若为空呢,这样肯定会报异常了。
最后,我们来看看 as 的用法:
在kotlin中,as 实现 强制转换,例如:
var user=User()
var baseUser: BaseUser? = user as? BaseUser
当使用 as 转型的时候,可能会经常出现 ClassCastException。 所以,现在可以使as?安全转型,当转型不成功的时候,它会返回 null。