最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin淺析null操作方法

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

1.在java中由于null引起的空指針異常,是一個運行時異常。

在kotlin中為了避免這樣的問題,會在編譯期提示出來,而不是在運行期才報錯。

1)比如我們把null賦值給一個已經被賦值的變量或者定義一個返回null的函數,編譯器就會報錯提示: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賦值給一個變量,或者函數,帶上一個?這樣編譯器就不會報錯了。

    var hello: String? = "hello world"
    hello = null
fun getString(): String? {
    return null
}

2.安全調用操作符:問號?

為了避免空指針,kotlin不讓我們給非空變量賦值null,但null在Kotlin中依存在,這種情況下,我們可以使用安全操作符 ?來避免發(fā)生空指針異常。

當編譯器遇到安全調用操作符時,會去檢查,如果是null,就會跳過函數的執(zhí)行,而不會拋出異常。

比如下面這幾行代碼,在java中必然會拋出異常,但是在kotlin中會跳過count()函數執(zhí)行,并返回null,不會拋出異常。

fun main() {
    val str = getString()
    val count = str?.count()
    println(count)
}
fun getString(): String? {
    return null
}

3.非空斷言操作符:!!雙感嘆號

!!又稱為感嘆號操作符,當變量為null時,會拋出空指針異常,NullPointerException

fun main() {
    val str = getString()
    val count = str!!.count()
    println(count)
}
fun getString(): String? {
    return null
}

4.在Kotlin中也可以用if來判斷null的情況

fun main() {
    val str = getString()
    if (str == null) {
        println("null")
    } else {
        val count = str?.count()
        println(count)
    }
}
fun getString(): String? {
    return null
}

5.空合并操作符?:

?: 如何符號左邊的值為null,則使用右邊的值。

下面這行代碼打印的結果就是 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()
    }

到此這篇關于Kotlin淺析null操作方法的文章就介紹到這了,更多相關Kotlin null內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

荃湾区| 吴忠市| 体育| 兴仁县| 凤阳县| 郑州市| 南通市| 寻甸| 阿坝县| 红桥区| 乐清市| 静乐县| 定结县| 绥化市| 黑水县| 镇坪县| 承德市| 喀喇沁旗| 澄江县| 河北区| 马公市| 定襄县| 门头沟区| 贺兰县| 灌阳县| 广河县| 曲松县| 金门县| 克拉玛依市| 商水县| 新蔡县| 称多县| 利津县| 聊城市| 乌鲁木齐市| 温州市| 成都市| 乌拉特中旗| 邯郸市| 青铜峡市| 蕉岭县|