En mi forma de pensar, un bucle for se usa para recorrer en iteración un rango conocido o determinable.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
que es equivalente (alcance de i aparte) a:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
En otras palabras, el bucle for
es simplemente un azúcar sintáctico (muy útil) para un constructo while
utilizado comúnmente.
Sin embargo, estoy viendo muchas construcciones for(;;)
en la web que son funcionalmente equivalentes a while(true)
¿Cuál es el razonamiento de esto? ¿Por qué se preferiría el bucle infinito para el bucle infinito?
// ¡Incluso vi un libro de texto de java que no usaba mientras que los bucles en absoluto! Conduciendo a construcciones tan monstruosas como:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}