Java,将null赋给object和声明之间的区别是什么

时间:2013-05-07 09:39:38

标签: java null declaration

有什么区别:

  • Object o = null;和
  • Object o;(只是声明)

有人可以回答我吗?

2 个答案:

答案 0 :(得分:37)

这取决于声明变量的范围。例如,局部变量没有default values,在这种情况下,您必须手动分配 null ,其中实例变量< / strong>赋值null是多余的,因为实例变量获取默认值。

public class Test {
    Object propertyObj1;
    Object propertyObj2 = null; // assigning null is redundant here as instance vars get default values 

    public void method() {
        Object localVariableObj1;
        Object localVariableObj1.getClass(); // illegal, a compiler error comes up as local vars don't get default values

        Object localVariableObj2 = null;
        Object localVariableObj2.getClass(); // no compiler error as localVariableObj2 has been set to null

        propertyObj1.getClass(); // no compiler error
        propertyObj2.getClass(); // no compiler error
    }
}

答案 1 :(得分:1)

如上所述,对象引用instance variable无需分配null,因为null为默认值。但必须初始化局部变量,否则会出现编译错误The local variable s may not have been initialized

有关详细信息,请参阅this link