在java中传递null作为对象而没有任何错误

时间:2015-04-16 15:33:42

标签: java

根据下面的程序,我很困惑null是否是一个对象因为我的程序编译得很好而没有任何错误。我认为它会给出一个空指针异常,因为我在第1行传递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
    }
}

3 个答案:

答案 0 :(得分:3)

不,'null'是一个值。在java中,您将参数传递给函数作为引用(基本类型除外),其值(此引用的)'指向'对象。在这种情况下,参考值指向任何东西。

补充说明;

Integer n = new Integer(8);

n - 是对内存中对象的引用。此引用的值类似于Integer@23434342,类似于内存地址。在此地址是您的对象,其中一些字段包含8

n = null告诉n无处可指。这就是为什么它是一个参考价值。

答案 1 :(得分:1)

当您将对象作为参数传递时,它的'地址通过。 null传递地址值0.如果您对代码编译的原因感到好奇,那就是原因。

答案 2 :(得分:0)

不,null是一个文字表达式。此文字表达式的值是" null引用"。空引用是null类型表达式的唯一可能值。

For more details take a look at Java Language Specification