Java:无限循环公约

时间:2013-04-13 15:44:37

标签: java infinite-loop conventions

Java中无限循环的约定是什么?我应该写while(true)还是for(;;)?我个人会使用while(true)因为我不经常使用while循环。

5 个答案:

答案 0 :(得分:74)

while(true)for(;;)之间的字节码没有区别,但我更喜欢while(true),因为它不那么令人困惑(特别是对于刚接触Java的人)。

您可以使用此代码示例

进行检查
void test1(){
    for (;;){
        System.out.println("hello");
    }
}
void test2(){
    while(true){
        System.out.println("world");
    }
}

使用命令javap -c ClassWithThoseMethods时,您将获得

  void test1();
    Code:
       0: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #21                 // String hello
       5: invokevirtual #23                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: goto          0

  void test2();
    Code:
       0: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #31                 // String world
       5: invokevirtual #23                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: goto          0

显示相同的结构(“hello”vs“world”字符串除外)。

答案 1 :(得分:12)

我更喜欢while(true),因为我使用while循环比循环更少。 for循环有更好的用途,while(true)for(;;)

更清晰,更易于阅读

答案 2 :(得分:6)

这取决于你。我认为这样的事情没有惯例。您可以使用while(true)for(;;)

我想说我会在源代码中经常遇到while(true)for(;;)使用频率较低,难以阅读。

答案 3 :(得分:3)

最终,这是你的选择。以下Java参考使用for (;;)格式:The for Statement

但是,根据我的经验,while(true)在无限循环中的使用频率更高。

答案 4 :(得分:1)

for(;;)糟透了,读新手是完全不直观的。请改用while(true)