群里有一個小伙伴發了一段和下面差不多的代碼啊,問了一個問題,代碼如下:
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;
其他的基本資料型別也是如此,
個人學習,內容拙劣見諒
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/167797.html
標籤:Java
上一篇:Java3個編程題整理
