0 != null 爲何報指針?

你們好,這是我第一次寫博客,來分享我平時工做中遇到的問題及平時學習的技術,若是有寫的很差或者不對的地方還望你們可以指出和包涵。java

那麼接下來就開始說下我工做中遇到的這個問題,我寫了一個test,以下:學習

@Test
    public void test9() {
        Integer a = null;
        if (0 != a) {
            System.out.print("12344");
        }
    }

 執行以後,報了空指針,當時一直不知道爲何,後來查閱資料發現原來是自動拆箱的問題,那麼接下來我來仔細講解一下:spa

 1.首先咱們先了解下什麼是自動拆箱,裝箱?指針

 簡單來講裝箱就是自動將基本數據類型轉換爲包裝類型,拆箱就是自動將包裝類型轉換爲基本數據類型。code

//自動裝箱
Integer a = 100;
//真正執行的是
Integer a = Integer.valueOf(100);
//自動拆箱
int b = a;
//真正執行的是
int b = a.intValue();

2.不一樣類型用 != 比較時,包裝類自動拆箱。 blog

3.Integer是包裝類,默認值是null;int是基本數據類型,默認值是0。博客

4.你們如今再看下我上面寫的那個test就會發現因爲0是int類型,a是Integer類型,因此當0 != a 時候,a會自動拆箱,執行a.intValue(),因爲a = null,因此就報了空指針。class

嘻嘻,第一次寫,仍是寫的不夠好,之後會繼續💪。test

有不懂的地方或者問題均可以給我留言哈,嘻嘻。數據類型

相關文章
相關標籤/搜索