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 回答