1.
for (int i = 0; (boolean)true; i++) {
}
2.
for (int i = 0; (boolean)false; i++) {
}
3.
boolean t=false;
for (int i = 0; t; i++) {
}
第一个for循环编译并运行,但第二个for循环编译失败出现错误
。它显示不可达语句
。第三个for循环编译并运行。
1.
for (int i = 0; (boolean)true; i++) {
}
2.
for (int i = 0; (boolean)false; i++) {
}
3.
boolean t=false;
for (int i = 0; t; i++) {
}
第一个for循环编译并运行,但第二个for循环编译失败出现错误
。它显示不可达语句
。第三个for循环编译并运行。
int i=0;
while(true)
i++;
true
,且没有任何改变这个真实值的操作。Unreachable code
,因为下面的代码块永远不会被执行(false
始终为假,且您从未更改它)。所以这段代码是多余的。while(false)
或您所拥有的第二个循环与if(false)…
不同,因为while(false)
(或您所拥有的循环)没有意义,因为它下面的代码将不会执行 ,而if(false)
可能有else
,所以编译器在这种情况下不会抱怨它。
false
值,在这种情况下,该变量可以重新分配一个true
值。因此编译器不会引起错误。
请注意,如果将变量声明为final
,则编译器将引发错误,因为该变量永远不可能被分配给新值,因此for
循环下面的代码是无法到达的。for
循环中,条件始终为 false
,因此 for
块(即使为空)将永远不会被执行(它是 unreacheable
)。if (false) {
}
for (int i = 0; <This_has_to_be_true>; i++)
boolean t=false;
前面加上final
,它就不会再次编译。这完全取决于编译器能够保证什么。 - Bhesh Gurung