这个“for(;;)”循环的条件是啥? [复制]
Posted
技术标签:
【中文标题】这个“for(;;)”循环的条件是啥? [复制]【英文标题】:What is the condition for this "for(;;)" loop? [duplicate]这个“for(;;)”循环的条件是什么? [复制] 【发布时间】:2014-12-26 13:14:05 【问题描述】:谁能解释这个for循环的条件是什么?
for(;;)
//do sth.
【问题讨论】:
同while(true)
相关:java-infinite-loop-convention
【参考方案1】:
for循环的三个表达式是可选的,可以创建一个无限循环如下:
// Infinite loop
for ( ; ; )
// Your code goes here
【讨论】:
【参考方案2】:正如大家所说,这是一个无限循环。判断它是一个无限循环的简单方法是查看字节码中的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
,它位于行上方。这个过程永远不会停止。
【讨论】:
【参考方案3】:如果你试图反编译这个简单的程序
for(;;)
System.out.println("yes");
你会得到这个结果:
do
System.out.println("yes");
while(true);
我正在使用这个反编译工具:JAD Java Decompiler(不适用于 Java 8+)
【讨论】:
【参考方案4】:等于:
while(true)
//do sth.
这是一个无限循环。
【讨论】:
【参考方案5】:这是一个没有条件的无限循环。 for 循环包含以下语义
for(loop variable initialization ; condition to terminate ; variable increment)
由于两个';'之间没有任何东西,所以它没有条件无限循环
【讨论】:
【参考方案6】:这是一个无限循环,因为条件为空。
来自 java specs 如果表达式不存在,那么 for 语句可以正常完成的唯一方法是使用 break
语句。因为你没有条件和break
,所以你的它是一个无限循环。
【讨论】:
【参考方案7】:如果测试条件为空(并且在此处),则没有测试并且循环无限期地继续。这是无限循环的简写形式。
【讨论】:
【参考方案8】:它没有条件。这是一个无限循环。
【讨论】:
以上是关于这个“for(;;)”循环的条件是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
javascript中的for(;;)后面的括号中的符号是啥意思?