2013-12-09 27 views
0

下面的代碼真的讓我困惑。輸出是「int數組」,但如果我引用第二個混淆函數,則輸出將是「Obejct」。我想知道null在Java中的真正含義。'null'是否屬於任何類型?

而且也是爲什麼混淆類與調用第二個構造函數,而不是第一個構造函數

爲什麼編譯器會調用構造函數,因爲它總是要求最低的擴展類的創建

public class Confusing { 

    public Confusing(Object o){ 
     System.out.println("Obejct"); 
     if(o instanceof Object) 
      System.out.println("Object"); 
    } 

    public Confusing(int[] iArray){ 
     System.out.println("int array"); 
     if(iArray instanceof int[]) 
      System.out.println("Array"); 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     new Confusing(null); 
    } 

} 
+3

http://stackoverflow.com/questions/2707322/what-is的-null-in-java –

+0

Null意味着什麼,你可以傳遞任何東西,而不是任何對象,但除非方法期待它,否則很少是一個好主意 –

+0

爲什麼你必須檢查它是否是'instanceof'?不'類型提示已經這樣做? –

回答

3

null一個對象,它是一個參考,見JLS

還有一種特殊類型null,表達null, 不具有名稱的類型。因爲null類型沒有名稱,所以不可能 聲明null類型的變量或將其轉換爲null類型。 null參考是表達式null 類型的唯一可能值。總是可以將null引用轉換爲任何引用類型。在 實踐中,程序員可以忽略null類型,只是假裝 即null僅僅是一種特殊的文本,可以是任何參考 類型

相關問題