保留变量未初始化有时是一件好事,它允许编译器在使用它之前检查它是否已分配到代码的所有可能分支中。例如,如果你有一个复杂的条件下,分配一个变量,不应该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;
因为这是事物的方式是...在一流水平 –
唯一的成员变量自动,如果你初始化不要明确地初始化它们;局部变量不会自动初始化。这些只是Java编程语言的规则。 – Jesper