0 != null 為什么報指針?


大家好,這是我第一次寫博客,來分享我平時工作中遇到的問題及平時學習的技術,如果有寫的不好或者不對的地方還望大家能夠指出和包涵。

那么接下來就開始說下我工作中遇到的這個問題,我寫了一個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,所以就報了空指針。

嘻嘻,第一次寫,還是寫的不夠好,以后會繼續💪。

有不懂的地方或者問題都可以給我留言哈,嘻嘻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM