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 = nullfun getString(): String{
return null
}2)如何把null賦值給一個(gè)變量,或者函數(shù),帶上一個(gè)?這樣編譯器就不會(huì)報(bào)錯(cuò)了。
var hello: String? = "hello world"
hello = nullfun 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)
!!又稱為感嘆號(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入門之TableLayout應(yīng)用解析(二)
這篇文章主要介紹了Android入門之TableLayout應(yīng)用,需要的朋友可以參考下2014-08-08
Android點(diǎn)擊按鈕返回頂部實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android返回頂部實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android 8.0版本更新無(wú)法自動(dòng)安裝問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android 8.0版本更新無(wú)法自動(dòng)安裝問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android生成隨機(jī)數(shù)的方法實(shí)例
這篇文章主要為大家詳細(xì)介紹了Android生成隨機(jī)數(shù)的方法實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
分享一個(gè)Android設(shè)置圓形圖片的特別方法
圓形圖片想必是項(xiàng)目開發(fā)中也是不少用的一個(gè)知識(shí)點(diǎn)吧。那么這里學(xué)習(xí)一下簡(jiǎn)單的制作圓形圖片,這個(gè)方法不用于平時(shí)的實(shí)現(xiàn)方法,有需要的可以參考借鑒。2016-09-09
Android?Camera1實(shí)現(xiàn)預(yù)覽框顯示
這篇文章主要為大家詳細(xì)介紹了Android?Camera1實(shí)現(xiàn)預(yù)覽框顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android?自定義開源庫(kù)?EasyView實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Android自定義開源庫(kù)EasyView實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
android開發(fā)教程之framework增加字符串資源和圖片等resource資源
這篇文章主要介紹了android開發(fā)中framework增加字符串資源和圖片等resource資源方法,需要的朋友可以參考下2014-02-02
Android 使用Vitamio打造自己的萬(wàn)能播放器(8)——細(xì)節(jié)優(yōu)化
本文主要介紹Android Vitamio開發(fā)播放器,這里給大家提供了一些小的細(xì)節(jié)優(yōu)化,更加完善播放器的功能,希望能幫助有需要的小伙伴2016-07-07

