2015-04-16 51 views
-2

基於下面的程序我很困惑null是否是一個對象,因爲我的程序可以很好地編譯出任何錯誤。我認爲這會給出一個空指針異常,因爲我在1號線在Java中傳遞null作爲對象,無任何錯誤

public class GC { 
    private Object o; 
    private void doSomethingElse(Object obj) 
    { 
     o = obj; 
     System.out.println(o); // prints null 
    } 
    public static void main(String[] args) { 
     GC g = new GC(); 
     g.doSomethingElse(null); // LINE 1 
    } 
} 
+1

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

回答

3

不,'null'是一個值。在Java中,你傳遞參數作爲參考(基本類型除外),其值(該參考)'指向'對象。在這種情況下,參考值指向無。

補充說明;

Integer n = new Integer(8);

N - 是在存儲器中的對象的引用。這個引用的值類似於[email protected],就像內存地址一樣。在這個地址是你的對象,有一些字段可以保存8

n = null告訴n指向無處。這就是爲什麼它是一個參考值。

+0

不明白你在說什麼 – kittu

+0

我添加了註釋。 – Kuba

1

空路過當你傳遞一個對象作爲參數,它的地址傳遞。 null傳遞地址值0.如果您對代碼編譯的原因感到好奇,那就是爲什麼。