學(xué)習(xí)koltin尼酿,弄懂它的操作符的意思很重要拾积,下面就記錄一下Kotlin常用操作符:
1殉挽、類型判斷符 is
檢查某個(gè)實(shí)例是否是某個(gè)類型,如果判斷出屬于某個(gè)類型拓巧,那么判斷后的分支中可以直接當(dāng)做該類型使用斯碌,無需顯示轉(zhuǎn)換
fun getStringLength(obj: Any): Int? {
? ? ? ? //obj在右邊自動(dòng)動(dòng)轉(zhuǎn)換成"String"類型? ? ??
????????? if (obj is String && obj.length > 0)
? ? ? ? ? ????? return obj.length? ? ? ??
????return null? ??
}
2、肛度?操作符
表示這個(gè)對(duì)象可能為空
//在變量類型后面加上問號(hào)傻唾,代表該變量是可空變量
var name: String? = "a"
/**
* 判斷obj是不是String類型,返回它的長(zhǎng)度
*/
fun getResult(obj: Any): Int? { //Int后面接?表示可以返回null
????var result = 0
????if (obj is String){
????????result = obj.length
? ? ?}
????return result
}
3、Elvis操作符 ?冠骄?:
在Koltin中伪煤,Elvis操作符特定是跟 null 比較,主要用來作null安全性檢查凛辣。
舉例:y = x?:0
等價(jià)于:
val y = if ?(x !=== null) ?x ?else ?0?
就是說如果x不等于null抱既,則 y = x,否則 y = 0;
舉例:val a = b?.length ?: -1
就是說如果 ?: 左側(cè)表達(dá)式非空扁誓,elvis操作符就返回其左側(cè)表達(dá)式防泵,否則返回右側(cè)表達(dá)式(-1)。注意蝗敢,當(dāng)且僅當(dāng)左側(cè)為空時(shí)捷泞,才會(huì)對(duì)右側(cè)表達(dá)式求值。
koltlin中沒有這樣的三元運(yùn)算符 true 前普?1:0肚邢,取而代之的事if (true) 1 else 0。
4拭卿、 非空斷言 !! 和安全調(diào)用 骡湖?. ?和 非空斷言調(diào)用 !! .
!! 是判斷他是一個(gè)非空的值
var str:String?="abc"
str = null
str.length ? //報(bào)錯(cuò),因?yàn)閟tr可能為null,所以需要安全調(diào)用 峻厚?. ?或者 非空斷言調(diào)用?!!?.
str?.length ? //返回null
str!!.length? //就會(huì)得到nullpointer空指針異常
5响蕴、..符號(hào) 以及 in 和 !in 操作符
..代表從a到b,包括a和b,這是一個(gè)閉區(qū)間運(yùn)算符惠桃,in和!in就是在不在這個(gè)區(qū)間里面
例如:i ?in 1..10 // 等價(jià)于 1 <= i && i <= 10
6浦夷、多行輸入符 """
三引號(hào)的形式用來輸入多行文本,也就是說在三引號(hào)之間輸入的內(nèi)容將被原樣保留辜王,之中的單號(hào)和雙引號(hào)不用轉(zhuǎn)義劈狐,
其中的不可見字符比如/n和/t都會(huì)被保留
val str = """
? ? ? ? ? ? ?one
? ? ? ? ? ? ?two
? ? ? ? ? ? ? """??
//等價(jià)于? ? ? ? ?
?val str = "one\ntwo"? ? ?
?val str =? "one" +"\n"+"two"
7、::符號(hào)
得到類的Class對(duì)象
startActivity(Intent(this, AboutAppActivity::class.java)