Самое важное - использовать самый простой и понятный цикл для решения проблемы.
Я бы предположил, что for
условно длиннее, поскольку его можно использовать для инициализации переменной.Если вместо этого вы инициализируете переменную перед циклом, она будет такой же.
Если вы сравните байт-код для
public static void main(String... args) {
for (int i = 0; i < 10; i++) {
}
int i = 0;
while (i < 10) {
i++;
}
}
, который равен
public static void main(java.lang.String...);
0: iconst_0
1: istore_1
2: iload_1
3: bipush 10
5: if_icmpge 14
8: iinc 1, 1
11: goto 2
14: iconst_0
15: istore_1
16: iload_1
17: bipush 10
19: if_icmpge 28
22: iinc 1, 1
25: goto 16
28: return
Вы можете видеть, что байт-код точно такой же.
do / while очень похож, но разница в том, что он не проверяет первую итерацию.Если вы всегда хотите сделать цикл хотя бы один раз, используйте do / while - это правильный цикл не потому, что он быстрее, а потому, что он чище.