kotlin中学习笔记——null
生活随笔
收集整理的這篇文章主要介紹了
kotlin中学习笔记——null
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
指定一個(gè)變量可null是通過在它的類型后面加?號,如
val a: String? = null (注意這個(gè)Int也可為空是因?yàn)樵趉otlin中一切都是對象,包括在java中的基本類型)
一個(gè)可null類型,沒有進(jìn)行檢查前不能使用,如下代碼會編譯出錯(cuò)
val a: String? = null
a.subString(2)
? kotlin另外一個(gè)特性是當(dāng)我們檢查了一個(gè)可null類型,這個(gè)對象會自動轉(zhuǎn)型成不可null類型,這就是Kotlin編譯器的智能轉(zhuǎn)換,如 val a: String? = null if(a != null){a.subString(2) } 在if語句中,a從Int?變成了Int,所以可以直接使用。但是在if代碼外,則需要重新檢查。 當(dāng)然這僅僅在變量當(dāng)前不能被改變的前提下,如果變量可能被另外線程改變就會變得復(fù)雜。 如果我們處處去做判斷,代碼會臃腫起來,kotlin中有更簡潔的處理方式,如: val a: String? = null a?.subString() 我們使用安全訪問符"?",只有當(dāng)不為null的時(shí)候才執(zhí)行這行代碼。否則不會做任何事情。 但是注意如果有賦值行為的話,a為null的話會返回null,如: val a: String? = null val s = a?.subString() s會被賦值為null kotlin中還有一種_Elvis operator_(?:)操作符,使用如下: val a: String? = null val s = a?.subString(2) ?: "" val s = a?.subString(2) ?: return false val s = a?.subString(2) ?: throw IllegalStateException() 在kotlin中return和throw都是表達(dá)式,所以可以用在_Elvis operator_操作符右邊 當(dāng)我們確定一個(gè)非null變量不為null,我們可以使用"!!"來強(qiáng)制跳過檢查正常編譯,如: val a: String? = null a!!.subString(2) 當(dāng)然不推薦經(jīng)常使用,因?yàn)槭俏唇?jīng)檢驗(yàn)的存在null指針崩潰的可能。 在android新版本中,我們可以用@Nullable和@NotNull注解來辨別參數(shù)是否可以為空或者函數(shù)返回是否可以為空。
? kotlin另外一個(gè)特性是當(dāng)我們檢查了一個(gè)可null類型,這個(gè)對象會自動轉(zhuǎn)型成不可null類型,這就是Kotlin編譯器的智能轉(zhuǎn)換,如 val a: String? = null if(a != null){a.subString(2) } 在if語句中,a從Int?變成了Int,所以可以直接使用。但是在if代碼外,則需要重新檢查。 當(dāng)然這僅僅在變量當(dāng)前不能被改變的前提下,如果變量可能被另外線程改變就會變得復(fù)雜。 如果我們處處去做判斷,代碼會臃腫起來,kotlin中有更簡潔的處理方式,如: val a: String? = null a?.subString() 我們使用安全訪問符"?",只有當(dāng)不為null的時(shí)候才執(zhí)行這行代碼。否則不會做任何事情。 但是注意如果有賦值行為的話,a為null的話會返回null,如: val a: String? = null val s = a?.subString() s會被賦值為null kotlin中還有一種_Elvis operator_(?:)操作符,使用如下: val a: String? = null val s = a?.subString(2) ?: "" val s = a?.subString(2) ?: return false val s = a?.subString(2) ?: throw IllegalStateException() 在kotlin中return和throw都是表達(dá)式,所以可以用在_Elvis operator_操作符右邊 當(dāng)我們確定一個(gè)非null變量不為null,我們可以使用"!!"來強(qiáng)制跳過檢查正常編譯,如: val a: String? = null a!!.subString(2) 當(dāng)然不推薦經(jīng)常使用,因?yàn)槭俏唇?jīng)檢驗(yàn)的存在null指針崩潰的可能。 在android新版本中,我們可以用@Nullable和@NotNull注解來辨別參數(shù)是否可以為空或者函數(shù)返回是否可以為空。
?
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的kotlin中学习笔记——null的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kotlin学习笔记——sqlite(a
- 下一篇: kotlin学习笔记——过程控制和Ran