Java,将 null 分配给对象和仅声明有什么区别

2022-09-01 08:52:33

有什么区别:

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

任何人都可以回答我吗?


答案 1

这取决于声明变量的作用域。例如,局部变量没有,在这种情况下,您将必须手动分配 null,在这种情况下,实例变量分配 null 是多余的,因为实例变量获得默认值。default values

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
    }
}

答案 2

如前所述,不需要分配对象引用,因为这些引用是默认值。但是局部变量必须初始化,否则您将收到编译错误,说.instance variablenullnullThe local variable s may not have been initialized

有关更多详细信息,请参阅此链接