Java, В чем разница между присваиванием null объекту и просто декларацией
В чем разница между:
Object o = null; и
Object o; (только объявление)
Кто-нибудь может ответить мне?
Ответ 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.
Для получения дополнительной информации вы можете сослаться на эту ссылку