What is the convention for an infinite loop in Java? Should I write while(true)
or for(;;)
? I personally would use while(true)
because I use while loops less often.
问题:
回答1:
There is no difference in bytecode between while(true)
and for(;;)
but I prefer while(true)
since it is less confusing (especially for someone new to Java).
You can check it with this code example
void test1(){
for (;;){
System.out.println("hello");
}
}
void test2(){
while(true){
System.out.println("world");
}
}
When you use command javap -c ClassWithThoseMethods
you will get
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
which shows same structure (except "hello" vs "world" strings) .
回答2:
I prefer while(true)
, because I use while loops less often than for loops. For loops have better uses and while(true)
is much cleaner and easy to read than for(;;)
回答3:
It's up to you. I don't think there is a convention for such a thing. You can either use while(true)
or for(;;)
I would say I encounter more often while(true)
in the source codes. for(;;)
is less often used and harder to read.
回答4:
Ultimately, it is your choice. The following Java reference uses the for (;;)
format: The for Statement.
However, while(true)
is used more often in infinite loops in my experience.
回答5:
for(;;)
sucks, it is completely unintuitive to read for rookies. Please use while(true)
instead.