Подтвердить что ты не робот

Java, В чем разница между присваиванием null объекту и просто декларацией

В чем разница между:

  • Object o = null; и
  • Object o; (только объявление)

Кто-нибудь может ответить мне?

4b9b3361

Ответ 1

Это зависит от области, в которой вы объявляете переменную. Например, локальные переменные не имеют 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;
        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
    }
}

Ответ 2

Как уже упоминалось, ссылку на объект как instance variable не нужно назначать null, поскольку те принимают null как значение по умолчанию. Но локальные переменные должны быть инициализированы, иначе вы получите ошибку компиляции, говоря The local variable s may not have been initialized.

Для получения дополнительной информации вы можете сослаться на эту ссылку