测试无效时出现“局部变量未初始化”错误

时间:2013-11-29 08:20:11

标签: java initialization

我认为我遗漏了一些相当简陋的东西,但是在下面的代码中我得到了错误 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一段时间,但我不认为我会忘记那么多......

提前致谢:)

2 个答案:

答案 0 :(得分:6)

如果条件x <= xMax为false,则循环将永远不会执行,因此if(array != null){ //do something }将被执行,这将访问未初始化的变量。

只需改变:

int [] array;

int [] array = null;

答案 1 :(得分:2)

即使基元和对象可以自动初始化(对象为null),初始化它们也是一个好习惯。

注意 必须显式初始化局部变量。 Java不会为您初始化它们。