Он компилируется до того же байтового кода, и это вопрос вкуса, какую конструкцию вы предпочитаете.
Я прочитал много исходного кода из распределенного JDK Oracle, и я не могу легко вспомнить, что я видел оператор while(true)
в их коде, но я видел много операторов for(;;)
в их коде , Я лично поддерживаю for(;;)
, и мои рассуждения выглядят примерно так:
В цикле while «следует» требуется логическое выражение, а не логическая константа. while(true)
немного похоже на if(true)
, оба из которых, я думаю, были сделаны законными только для дополнительного удобства масс. Пустой while()
не компилируется. Добавление true
выглядит как хакерство.
for(;;)
с другой стороны, это «реальная петля», хотя и пустая. Кроме того, это экономит вам пару нажатий клавиш! =) ( не то чтобы это имело значение )
Поэтому, и я знаю, что это звучит безумно, но хотя (правда) лучше читает по-английски, я думаю, что для (;;) лучше выразить свои намерения, и это больше похоже на язык программирования Java. В любом случае следует избегать вечных петель. Когда я читаю для (;;), я чувствую себя в безопасности, зная, что разработчик будет где-то тормозить путь выполнения. Когда я читаю while (true), я просто не могу быть в этом уверен. Но, может быть, это только я! Мы все можем выбирать свой вкус.