<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### **!!(非空斷言)** 非空斷言的出現為了解決什么問題?可空類型變量不能直接使用,但是直接使用非空判斷又過于復雜,所以還可以使用非空斷言。怎么使用非空斷言?之前的結構是【變量.方法】,現在的結構是【**變量!!.方法**】。 使用非空斷言,代碼執行邏輯是怎樣的?**變量不為NULL的時候,執行方法,變量為NULL的時候,拋出異常**,非空斷言(!!.)會將任何變量(可空類型變量或者非空類型變量)轉換為非空類型的變量,若該變量為空則拋出異常。參考下圖: ![](https://i.loli.net/2019/04/20/5cbb2e61b43d6.png) 通過使用非空斷言,如果值為null,可以顯式地拋出異常 * 如果變量age為null? ~~~ fun main(args: Array<String>) { //可空類型變量 var age: String? = null //使用非空斷言修飾符 val result = age!!.toInt() //打印結果 println(result) //隨便打印一句話 println("非空斷言修飾符后面的一句話") } ~~~ 運行結果 ``` Exception in thread "main" kotlin.KotlinNullPointerException at day02.非空斷言Kt.main(非空斷言.kt:14) Process finished with exit code 1 ``` 可以看出,代碼走到15行的時候就拋出異常了,15行后面的代碼沒有執行了。 **注意:異常拋出的位 置是非空斷言所在的那一行,而不是接下來試圖使用那個值的一行** * 如果變量age不為null? ~~~ fun main(args: Array<String>) { //可空類型變量 var age: String? = "18" //使用非空斷言修飾符 val result = age!!.toInt() //打印結果 println(result) //隨便打印一句話 println("非空斷言修飾符后面的一句話") } ~~~ 運行結果 ``` 18 非空斷言修飾符后面的一句話 Process finished with exit code 0 ``` >[info]注意:還有一個需要牢記的注意事項: 當你使用!!并且它的結果是異常時, 異常調用棧的跟蹤信息只表明異常發生在哪一行代碼,而不會表明異常發生在哪一個表達式。為了讓跟蹤信息更清晰精確地表示哪個值為null,最好避免在同一行中使用多個!!斷言,如下就是錯誤的代碼`person.company!!.address!!.country`,這是錯誤的 **安全調用符和非空斷言如何選擇?** 1. 從安全角度,**安全調用符比非空斷言更加安全**。變量為NULL的時候,使用安全調用符不會拋出異常,使用非空斷言,會拋出異常。 2. **非空斷言的做法是不推薦的**,一個可空類型變量,加上非空斷言,可以理解為開發者就是認定一個可空的變量為非空的,這顯得有些霸道,不夠和諧(大笑)。 3. 安全調用符和非空斷言的對比如下 ![](https://img.kancloud.cn/f6/94/f694cdda90366f7e24e01b082697dfc5_1360x225.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看