Kotlin淺析null操作方法
1.在java中由于null引起的空指針異常,是一個(gè)運(yùn)行時(shí)異常。
在kotlin中為了避免這樣的問(wèn)題,會(huì)在編譯期提示出來(lái),而不是在運(yùn)行期才報(bào)錯(cuò)。
1)比如我們把null賦值給一個(gè)已經(jīng)被賦值的變量或者定義一個(gè)返回null的函數(shù),編譯器就會(huì)報(bào)錯(cuò)提示:Null can not be a value of a non-null type String
var hello = "hello world" hello = null
fun getString(): String{ return null }
2)如何把null賦值給一個(gè)變量,或者函數(shù),帶上一個(gè)?這樣編譯器就不會(huì)報(bào)錯(cuò)了。
var hello: String? = "hello world" hello = null
fun getString(): String? { return null }
2.安全調(diào)用操作符:?jiǎn)柼?hào)?
為了避免空指針,kotlin不讓我們給非空變量賦值null,但null在Kotlin中依存在,這種情況下,我們可以使用安全操作符 ?來(lái)避免發(fā)生空指針異常。
當(dāng)編譯器遇到安全調(diào)用操作符時(shí),會(huì)去檢查,如果是null,就會(huì)跳過(guò)函數(shù)的執(zhí)行,而不會(huì)拋出異常。
比如下面這幾行代碼,在java中必然會(huì)拋出異常,但是在kotlin中會(huì)跳過(guò)count()函數(shù)執(zhí)行,并返回null,不會(huì)拋出異常。
fun main() { val str = getString() val count = str?.count() println(count) } fun getString(): String? { return null }
3.非空斷言操作符:!!雙感嘆號(hào)
!!又稱(chēng)為感嘆號(hào)操作符,當(dāng)變量為null時(shí),會(huì)拋出空指針異常,NullPointerException
fun main() { val str = getString() val count = str!!.count() println(count) } fun getString(): String? { return null }
4.在Kotlin中也可以用if來(lái)判斷null的情況
fun main() { val str = getString() if (str == null) { println("null") } else { val count = str?.count() println(count) } } fun getString(): String? { return null }
5.空合并操作符?:
?: 如何符號(hào)左邊的值為null,則使用右邊的值。
下面這行代碼打印的結(jié)果就是 hello
fun main() { val str = getString() ?: "hello" println(str) } fun getString(): String? { return null }
6.Kotlin中捕獲異常 try catch
try { val str = getString() val count = str!!.count() println(count) } catch (e: Exception) { e.printStackTrace() }
到此這篇關(guān)于Kotlin淺析null操作方法的文章就介紹到這了,更多相關(guān)Kotlin null內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android重寫(xiě)View并自定義屬性實(shí)例分析
這篇文章主要介紹了Android重寫(xiě)View并自定義屬性的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android基于重寫(xiě)View實(shí)現(xiàn)自定義屬性的相關(guān)布局與具體技巧,需要的朋友可以參考下2016-02-02Android自定義view實(shí)現(xiàn)輸入控件
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)輸入控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05淺談Android手機(jī)聯(lián)系人開(kāi)發(fā)之增刪查改功能
這篇文章主要介紹了Android手機(jī)聯(lián)系人開(kāi)發(fā)之增刪查改功能,需要的朋友可以參考下2017-05-05超簡(jiǎn)單實(shí)現(xiàn)Android自定義Toast示例(附源碼)
本篇文章主要介紹了超簡(jiǎn)單實(shí)現(xiàn)Android自定義Toast示例(附源碼),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02Android 沉浸式改變小米魅族狀態(tài)欄顏色的實(shí)例代碼
這篇文章主要介紹了Android 沉浸式改變小米魅族狀態(tài)欄顏色的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Android利用繪制緩沖實(shí)現(xiàn)代碼雨效果
看過(guò)很多代碼雨的前端實(shí)現(xiàn),卻很少看到過(guò)Android代碼雨效果的實(shí)現(xiàn),當(dāng)然 open gl es的實(shí)現(xiàn)是有的,一個(gè)主要的原因是,在Android Canvas繪制時(shí),很少有人考慮使用繪制緩沖,所以本文將給大家介紹Android如何利用繪制緩沖實(shí)現(xiàn)代碼雨效果,需要的朋友可以參考下2024-03-03android全局監(jiān)控click事件的四種方式(小結(jié))
本篇文章主要介紹了android全局監(jiān)控click事件的四種方式(小結(jié)),詳細(xì)介紹如何在全局上去監(jiān)聽(tīng) click 點(diǎn)擊事件,并做些通用處理或是攔截,有興趣的可以了解一下2017-08-08