Оставлять переменную неинициализированной иногда полезно, чтобы компилятор мог проверить, назначена ли она во всех возможных ветвях кода, прежде чем использовать ее.Например, если у вас сложное условие, которое присваивает переменную и никогда не должно быть null
:
String variable;
if (conditionA) {
if (conditionB)
variable = "B";
else
variable = "A";
} else {
switch (conditionC) {
case 1:
variable = "C1";
break;
case 2:
variable = "C2";
break;
default:
variable = "CD";
break;
}
}
System.out.println(variable.length());
Если вы забудете назначить переменную в одной из ветвей, компилятор будет жаловаться.Поскольку вы знаете, что вы никогда не назначаете null
, вы можете безопасно использовать переменную, не проверяя ее на null
.Если вы инициализируете переменную с null
в определении и забудете установить значение переменной, компилятор не сможет это проверить, и вы можете получить NullPointerException
:
String variable = null;
if (conditionA)
variable = "A";
// NullPointerException if conditionA is false, not check by compiler
System.out.println(variable.length());
.Переменная также может быть окончательной, и в этом случае она может быть назначена только один раз.Если бы вы инициализировали его значением по умолчанию, оно уже было бы назначено и не может быть переназначено:
final int variable;
if (condition)
variable = 1;
else
variable = 2;