int和Integer的默認值


 群里有一個小伙伴發了一段和下面差不多的代碼啊,問了一個問題,代碼如下:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        Integer name = doem01.name();
        System.out.println(name);
    
    }

     public Integer name() {
        return null;
     }

這段代碼毫無疑問,打出來的是null 群友問,為什么name中的return不報錯啊,null不是string的默認值嘛然而我定義的是Integer 。這個是群友發的

 這時我也不知道啊,就百度尋找答案,萬能的度娘告訴我:

值類型 : 默認值為0;

引用類型 :  默認值為null;

 下面的代碼中,我們將Interger改成int類型:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        int name = doem01.name();
        System.out.println(name);
    
    }

     public Integer name() {
        return null;
     }

代碼編譯時不會報錯,但運行的時候會報一個空指針的錯誤,為什么呢?因為Integer是int的封裝類,編譯器能夠識別,但是它所調用的方法又是另一個,所以運行時

找不到那個方法所以報了一個空指針,代碼如下:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        int name = doem01.name();
        Integer name1 = doem01.name1();
        System.out.println(name);
        System.out.println(name1);
    
    }

    private int name() {
        // TODO Auto-generated method stub
        return 0;
    }

     public Integer name1() {
        return null;
     }

如代碼int 聲明的調用的是 int name()這個方法 Integer聲明的調用的是Integer name1()這個方法。在聲明變量初始化時也是相同的道理,int聲明的變量只能為int類型

而Integer出來int類型外,還可以定義為null。如下:

Integer a1 = null;
int a2 =null;  //這行會報錯
int a3 =1;
int a4 = (Integer) null;

其他的基本數據類型也是如此。

個人學習,內容拙劣見諒


免責聲明!

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



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