我认为我遗漏了一些相当简陋的东西,但是在下面的代码中我得到了错误
The local variable array may not have been initialized
在我测试其无效性的行:
int [] array;
outerloop:
for(int x = xMin;x <= xMax;x++){
for(int y = yMin;y <= yMax;y++){
if(condition(x,y)){
array = new int[2];
array[0] = x;
array[1] = y;
break outerloop;
}
}
}
if(array != null){
//do something
}
这是为什么?在变量未初始化的情况下,测试是否应该返回false?我已经离开Java一段时间,但我不认为我会忘记那么多......
提前致谢:)
答案 0 :(得分:6)
如果条件x <= xMax
为false,则循环将永远不会执行,因此if(array != null){ //do something }
将被执行,这将访问未初始化的变量。
只需改变:
int [] array;
到
int [] array = null;
答案 1 :(得分:2)
即使基元和对象可以自动初始化(对象为null),初始化它们也是一个好习惯。
注意强> 必须显式初始化局部变量。 Java不会为您初始化它们。