【发布时间】:2014-12-26 13:14:05
【问题描述】:
谁能解释这个for循环的条件是什么?
for(;;) {
//do sth.
}
【问题讨论】:
-
同
while(true)
标签: java for-loop conditional-statements
谁能解释这个for循环的条件是什么?
for(;;) {
//do sth.
}
【问题讨论】:
while(true)
标签: java for-loop conditional-statements
for循环的三个表达式是可选的,可以创建一个无限循环如下:
// Infinite loop
for ( ; ; ) {
// Your code goes here
}
【讨论】:
正如大家所说,这是一个无限循环。判断它是一个无限循环的简单方法是查看字节码中的for(;;) 语句。
拿这个参考类:
public class Test {
public static void main (String[] args){
for(;;){}
}
}
编译器输出(字节码):
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0:
goto 0
}
goto 0 跳转到标签0,它位于行上方。这个过程永远不会停止。
【讨论】:
如果你试图反编译这个简单的程序
for(;;){
System.out.println("yes");
}
你会得到这个结果:
do
System.out.println("yes");
while(true);
我正在使用这个反编译工具:JAD Java Decompiler(不适用于 Java 8+)
【讨论】:
等于:
while(true){
//do sth.
}
这是一个无限循环。
【讨论】:
这是一个没有条件的无限循环。 for 循环包含以下语义
for(loop variable initialization ; condition to terminate ; variable increment)
由于两个';'之间没有任何东西,所以它没有条件无限循环
【讨论】:
这是一个无限循环,因为条件为空。
来自 java specs 如果表达式不存在,那么 for 语句可以正常完成的唯一方法是使用 break 语句。因为你没有条件和break,所以你的它是一个无限循环。
【讨论】:
如果测试条件为空(并且在此处),则没有测试并且循环无限期地继续。这是无限循环的简写形式。
【讨论】:
它没有条件。这是一个无限循环。
【讨论】: