大家好,這是我第一次寫博客,來分享我平時工作中遇到的問題及平時學習的技術,如果有寫的不好或者不對的地方還望大家能夠指出和包涵。 那麼接下來就開始說下我工作中遇到的這個問題,我寫了一個test,如下: 執行之後,報了空指針,當時一直不知道為什麼,後來查閱資料發現原來是自動拆箱的問題,那麼接下來我來仔細 ...
大家好,這是我第一次寫博客,來分享我平時工作中遇到的問題及平時學習的技術,如果有寫的不好或者不對的地方還望大家能夠指出和包涵。
那麼接下來就開始說下我工作中遇到的這個問題,我寫了一個test,如下:
@Test public void test9() { Integer a = null; if (0 != a) { System.out.print("12344"); } }
執行之後,報了空指針,當時一直不知道為什麼,後來查閱資料發現原來是自動拆箱的問題,那麼接下來我來仔細講解一下:
1.首先我們先瞭解下什麼是自動拆箱,裝箱?
簡單來說裝箱就是自動將基本數據類型轉換為包裝類型,拆箱就是自動將包裝類型轉換為基本數據類型。
//自動裝箱 Integer a = 100; //真正執行的是 Integer a = Integer.valueOf(100); //自動拆箱 int b = a; //真正執行的是 int b = a.intValue();
2.不同類型用 != 比較時,包裝類自動拆箱。
3.Integer是包裝類,預設值是null;int是基本數據類型,預設值是0。
4.大家現在再看下我上面寫的那個test就會發現由於0是int類型,a是Integer類型,所以當0 != a 時候,a會自動拆箱,執行a.intValue(),由於a = null,所以就報了空指針。
嘻嘻,第一次寫,還是寫的不夠好,以後會繼續