保留變量未初始化有時是一件好事,它允許編譯器在使用它之前檢查它是否已分配到代碼的所有可能分支中。例如,如果你有一個複雜的條件下,分配一個變量,不應該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