Подтвердить что ты не робот

Java: Бесконечная петля

Что такое соглашение для бесконечного цикла в Java? Должен ли я писать while(true) или for(;;)? Я лично использовал бы while(true), потому что я использую while while while.

4b9b3361

Ответ 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).