你們好,這是我第一次寫博客,來分享我平時工做中遇到的問題及平時學習的技術,若是有寫的很差或者不對的地方還望你們可以指出和包涵。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
有不懂的地方或者問題均可以給我留言哈,嘻嘻。數據類型