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