欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin淺析null操作方法

 更新時(shí)間:2022年08月26日 09:24:09   作者:niuyongzhi  
Kotlin對(duì)比于Java的一個(gè)最大的區(qū)別就是它致力于消除空引用所帶來(lái)的危險(xiǎn)。在Java中,如果我們嘗試訪(fǎng)問(wèn)一個(gè)空引用的成員可能就會(huì)導(dǎo)致空指針異常NullPointerException(NPE)的出現(xiàn)。在Kotlin語(yǔ)言中就解決了這個(gè)問(wèn)題,下面來(lái)看看它是如何做到的

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)文章

最新評(píng)論