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 循环编译失败并出现错误
。它说 Unreachable Statement
。第三个 for 循环编译 & 运行。
最佳答案
第一个循环是无限循环。由于条件始终为真,并且将始终得到满足。
这就像写作:
int i=0;
while(true)
i++;
如您所见,条件始终为 true
,并且没有任何改变。
第二个循环是Unreachable code
,因为此循环下面的代码片段将永远无法到达(false
始终为 false,您永远不会更改它)。所以这是多余的。
参见第 14.21 章。 Unreachable Statements
因为 Java
知道程序员是人 :) 它会通知您这一点以防止错误。
请注意 while(false)
或第二个循环与 if(false)...
不同,因为 while(false)
(或您拥有的循环)没有意义,因为它下面的代码不会执行。不像 if(false)
可能有 else
,所以在这种情况下编译器不会提示它。
关于 OP 更新:
在第三种情况下不会有编译错误,因为 false
值被分配给变量,在这种情况下,变量可以重新分配为 true
它的值(value)。所以编译器不会出现错误。
请注意,如果变量声明为 final
,那么编译器将出现错误,因为永远无法为该变量分配新值,因此 for
循环下面的代码将无法访问。
关于java - 这个 java for 循环条件有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458248/