未初始化的对象与初始化为 NULL 的对象

2022-08-31 10:10:14

我在Java工作。

我通常这样设置一些对象:

public class Foo {
    private SomeObject someName;

    // do stuff

    public void someMethod() {
        if (this.someName != null) {
            // do some stuff
        }
    }
}

问题是:在这个例子中是否等同于,因为我可以在假设空检查未初始化的对象将是准确的?someNamenullreliably for all objects


答案 1

正确,未显式初始化的引用类型的静态成员和实例成员都由 Java 设置为。同样的规则也适用于数组成员。null

来自 Java 语言规范的第 4.12.5 节:

变量的初始值

程序中的每个变量在使用其值之前都必须有一个值:

每个类变量、实例变量或数组组件在创建时都使用默认值进行初始化

[...]对于所有参照类型,缺省值为 。null

请注意,上述规则排除了局部变量:它们必须显式初始化,否则程序将无法编译。


答案 2

如果已声明引用但未实例化,则其值为 。Objectnull