Java中无限循环的约定是什么?我应该写while(true)
还是for(;;)
?我个人会使用while(true)
,因为我较少使用 while 循环。
问问题
88441 次
5 回答
83
和之间的字节码没有区别,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”与“world”字符串除外)。
于 2013-04-13T15:48:25.757 回答
15
我更喜欢while(true)
,因为我使用 while 循环的频率低于 for 循环。For 循环有更好的用途,并且while(true)
比for(;;)
于 2013-04-13T15:46:58.907 回答
9
由你决定。我不认为有这样的约定。您可以使用while(true)
或for(;;)
我会说我while(true)
在源代码中经常遇到。for(;;)
较少使用且较难阅读。
于 2013-04-13T15:47:12.353 回答
6
for(;;)
糟透了,对于新手来说阅读是完全不直观的。请while(true)
改用。
于 2013-04-13T15:50:55.080 回答