Java中无限循环的约定是什么?我应该写while(true)
还是for(;;)
?我个人会使用while(true)
因为我不经常使用while循环。
答案 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)
。