Неинициализированный объект против объекта Инициализирован в NULL

Я работаю на Java.

Я обычно настраиваю некоторые объекты как таковые:

public class Foo {
    private SomeObject someName;

    // do stuff

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

Возникает вопрос: Is someName в этом примере приравнивается к null, as-in Я могу reliably for all objects предположить, что нулевые проверки неинициализированных объектов будут точными?

Ответ 1

Правильно, как статические, так и члены экземпляра ссылочного типа, явно не инициализированные, устанавливаются на null с помощью Java. Это же правило применяется к членам массива.

Из Спецификация языка Java, раздел 4.12.5:

Начальные значения переменных

Каждая переменная в программе должна иметь значение перед его значением:

Каждая переменная класса, переменная экземпляра или компонент массива инициализируется значение по умолчанию при его создании

[...] Для всех типов ссылок значение по умолчанию null.

Обратите внимание, что приведенное выше правило исключает локальные переменные: они должны быть инициализированы явно, иначе программа не будет компилироваться.

Ответ 2

Если ссылка Object была объявлена, но не создана, ее значение равно null.