Что такое соглашение для бесконечного цикла в Java? Должен ли я писать while(true)
или for(;;)
? Я лично использовал бы while(true)
, потому что я использую while while while.
Java: Бесконечная петля
Ответ 1
Нет никакой разницы в байтовом коде между 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
Ответ 2
Я предпочитаю while(true)
, потому что я использую циклы меньше, чем для циклов. Для циклов лучше использовать, а while(true)
намного чище и легко читается, чем for(;;)
Ответ 3
Это вам. Я не думаю, что существует такая конвенция. Вы можете использовать while(true)
или for(;;)
Я бы сказал, что чаще встречаюсь while(true)
в исходных кодах. for(;;)
реже используется и труднее читать.
Ответ 4
В конечном счете, это ваш выбор. Следующая ссылка Java использует формат for (;;)
: Заявление.
Тем не менее, while(true)
используется чаще в бесконечных циклах в моем опыте.
Ответ 5
for(;;)
отстой, совершенно неинтуитивно читать читателей. Вместо этого используйте while(true)
.