Что такое соглашение для бесконечного цикла в Java? Должен ли я писать while(true)
или for(;;)
? Я лично использовал бы while(true)
, потому что я использую в то время как циклы реже.Java: Бесконечная петлевая конвенция
ответ
Нет разницы между байт-кодом между 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
, который показывает ту же структуру (кроме «привет» против «мира» строк).
+1: для объяснения – Aubin
+1 для различения «легкого» для чтения и * понимания *. Что-то в каждом другом ответе не получилось. – ChiefTwoPencils
Я думаю, что пришло время для Java придумать бесконечную конструкцию цикла, поэтому нам не нужны обходные пути, как и другие языки. Могу ли я предложить 'do {}' без 'while', или просто' loop {} '. –
Я предпочитаю while(true)
, потому что я использую в то время как петли реже, чем для циклов. Для петель лучше использовать и while(true)
намного чище и легко читается, чем for(;;)
Еще один аргумент в пользу while (true) - это ремонтопригодность: true может стать логическим условием в будущем – Aubin
@Aubin OTOH, 'for (;;)' приятнее при игре в гольф –
@Aubin, так может и средняя часть ' for'! Просто вставьте его как 'for (; condition(););'. Использование 'for' также означает, что вы можете легко добавить переменную для подсчета итераций цикла (или другого« между итерациями ») после второй из двух полуколей. – AJMansfield
Это зависит от вас. Я не думаю, что существует такая конвенция. Вы можете использовать while(true)
или for(;;)
Я бы сказал, что чаще всего встречаюсь с while(true)
в исходниках. for(;;)
реже используется и труднее читать.
Еще один аргумент в пользу while (true) - это ремонтопригодность: истина может стать логическим условием в будущем – Aubin
Нет ничего «трудного для чтения» о 'for ...' его трехбуквенном слове. – ChiefTwoPencils
В конечном счете, это ваш выбор. Следующая ссылка Java использует формат for (;;)
: The for Statement.
Тем не менее, while(true)
используется чаще в бесконечных циклах в моем опыте.
for(;;)
отстой, совершенно неинтуитивно читать новобранец. Вместо этого используйте while(true)
.
- 1. Вложенная петлевая конструкция
- 2. Конвенция Коды ошибок Java
- 3. Конвенция @@
- 4. Простая петлевая команда В Python
- 5. Java: Бесконечная ошибка «null»
- 6. Java Iterator Бесконечная петля
- 7. Бесконечная петля в Java
- 8. Конвенция в java - «новая» вне конструктора/метода?
- 9. Конвенция о присвоении имен событиям Java
- 10. Бесконечная петля с java-сканером
- 11. java несоответствие или бесконечная программа
- 12. java spring бесконечная параллельная работа
- 13. Ошибка Java - TIMEOUT (Бесконечная петля)
- 14. петлевая черепица/блокировка для крупномасштабного умножения матрицы
- 15. Конвенция по классам Внутри методов
- 16. Конвенция для указателя *
- 17. гр конвенция # имен именования
- 18. Структура библиотеки Конвенция
- 19. Конвенция о назначении Struct
- 20. Конвенция Ассоциации Rails
- 21. Конвенция об удалении CascadeOnDelete
- 22. Caliburn элемент конвенция
- 23. Конвенция по конфигурации
- 24. C# атрибут форматирование конвенция
- 25. ASP.Net MVC конвенция случае
- 26. Конвенция об именовании действий
- 27. Python Imports Конвенция
- 28. Конвенция для форматирования CSS
- 29. Android пакет имя конвенция
- 30. Конвенция для кодирования Хаффмана
Я предпочитаю делать 'while (running)', поэтому у меня есть выход из него. – NilsH
'break' может выйти. – Justin
для (;;) не очень. в то время как (работает) является _LOT_ более читаемым – radai