對於,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。