大家好,這是我第一次寫博客,來分享我平時工作中遇到的問題及平時學習的技術,如果有寫的不好或者不對的地方還望大家能夠指出和包涵。
那么接下來就開始說下我工作中遇到的這個問題,我寫了一個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,所以就報了空指針。
嘻嘻,第一次寫,還是寫的不夠好,以后會繼續💪。
有不懂的地方或者問題都可以給我留言哈,嘻嘻。
