您能否解释一下为什么对于
int i
我们不应该赋值 0,而对于 j
我们应该赋值?
当我们写
int j ;
而不写= 0
时,会出现以下错误:
变量“j”可能尚未初始化
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length;
j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at " + i + ", " + j);
} else {
System.out.println(searchfor + " not in the array");
}
}
}
当我宣布
int i = 0 ;
时,这里的零发出灰色光,意味着它是多余的,并且int j = 0 ;
,这里一切正常。
我们在各种 for 循环和
i
中几乎相同地使用 j
和 System.out.println
。 j 和 i 有什么区别。
这是因为当执行
break search
时,两个循环都会立即退出。如果您没有显式地为 j 指定一个值,则当程序到达 System.out.println
时,它没有有效值。 (编译器无法保证 if break search;
语句在嵌套循环 j 的早期执行时曾被赋值。
如果您想了解更多信息,请查看 java 编译的工作原理 java 编译是如何进行的