32

有什么区别:

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

任何人都可以回答我吗?

4

2 回答 2

44

这取决于您声明变量的范围。例如, 局部变量没有,default values在这种情况下您必须手动分配null ,而在实例变量分配 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;
        localVariableObj1.getClass(); // illegal, a compiler error comes up as local vars don't get default values

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

        propertyObj1.getClass(); // no compiler error
        propertyObj2.getClass(); // no compiler error
    }
}
于 2013-05-07T09:41:11.867 回答
2

如前所述,instance variable不需要分配对象引用,null因为它们null作为默认值。但是必须初始化局部变量,否则你会得到编译错误说The local variable s may not have been initialized

有关更多详细信息,您可以参考此链接

于 2013-05-07T10:00:23.710 回答