有人可以解释这个for循环的条件是什么吗?
for(;;) {
//do sth.
}
答案 0 :(得分:8)
没有条件。这是一个无限循环。
答案 1 :(得分:2)
如果测试条件为空(并且在此处),则没有测试并且循环无限期地继续。它是无限循环的简短形式。
答案 2 :(得分:2)
条件为空时,它是一个无限循环。
来自java specs如果Expression不存在,则for语句正常完成的唯一方法是使用break
语句。因为你没有条件和break
因此你的无限循环。
答案 3 :(得分:2)
这是一个没有条件的无限for循环。 for循环包含以下语义
for(loop variable initialization ; condition to terminate ; variable increment)
由于两者之间没有任何内容,因此无条件无限循环
答案 4 :(得分:2)
它等于:
while(true){
//do sth.
}
这是一个无限循环。
答案 5 :(得分:2)
如果你试图反编译这个简单的程序
for(;;){
System.out.println("yes");
}
你会得到这个结果:
do
System.out.println("yes");
while(true);
我正在使用这个反编译工具:JAD Java Decompiler(不适用于Java 8 +)
答案 6 :(得分:1)
for循环的三个表达式是可选的,可以按如下方式创建无限循环:
// Infinite loop
for ( ; ; ) {
// Your code goes here
}
答案 7 :(得分:1)
正如大家所说,这是一个无限循环。查看它是无限循环的简单方法是在字节代码中查看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
的标签上方。这个过程永远不会停止。