Un for
bucle en Java tiene la siguiente estructura -
for (initialization statement; condition check; update)
loop body;
Como se puede ver, hay cuatro declaraciones aquí -
- declaración de inicialización: Esta declaración se ejecuta sólo una vez, cuando el loop se ingresa por primera vez. Esta es una declaración opcional, lo que significa que puede elegir mantener este campo en blanco. En general, se usa para algunos fines de inicialización.
- Cheque condicional: Esta afirmación es probablemente la más importante. Verifica para verificar si cierta expresión se evalúa como verdadera. Si es así, entonces la ejecución del ciclo continúa. Puede optar por mantener este campo vacío, que se evaluará en
true
.
- Actualización: Esta lista de instrucciones se ejecuta de izquierda a derecha, normalmente se usa para incrementar/disminuir alguna variable.
- cuerpo de bucle: El cuerpo del bucle, que se ejecutará una y otra vez en función del valor de verdad del control condicional.
Básicamente, así es como sigue la ejecución: primero, cuando se ingresa el ciclo por primera vez, la instrucción de inicialización se ejecuta una vez. Luego se ejecuta la verificación condicional para ver si se evaluó como verdadero. Si es así, entonces se ejecuta el cuerpo del bucle, de lo contrario, la ejecución del bucle finaliza. Después de eso, la (s) declaración (es) de actualización se (son) ejecutan. A continuación, la comprobación condicional se ejecuta de nuevo, y si se evalúa como verdadera, entonces nuevamente se ejecuta el cuerpo del bucle, luego se ejecuta la instrucción de actualización, luego otra vez la comprobación condicional ... se obtiene la imagen.
Ahora sobre su sintaxis for(; ;)
. No tiene instrucción de inicialización, por lo que no se ejecutará nada. Su declaración de verificación condicional también está vacía, lo que significa que se evalúa como verdadera. Después de eso, se ejecuta el cuerpo del bucle.A continuación, dado que la declaración de actualización está vacía, no se ejecuta nada. Luego se realiza de nuevo la verificación condicional, que nuevamente se evalúa como verdadera y luego todo este proceso volverá a repetirse.
Como ve, básicamente se trata de un bucle infinito que no tiene instrucción de inicialización, cuya comprobación condicional siempre se evaluará como verdadera y que no tiene ninguna declaración de actualización. Esto es equivalente a -
while(true)
{
.....
}
que es otra construcción de bucle popular en java.
Cuando utiliza un bucle infinito como este, es importante prestar atención a la condición de ruptura ya que en la mayoría de los casos no puede dejar que un bucle se ejecute indefinidamente. Para salir de este tipo de bucles, puede usar la instrucción break
. La estructura es la siguiente -
if(some_condition_is_true)
break; // This will cause execution to break out of its nearest loop
o
if(some_condition_is_false)
break;
Aunque nos enseñan a evitar Usando bucles infinitos, soy culpable de un tiempo (verdadero) en más de una ocasión. –
Siento que tienen sus momentos en los que son útiles – user489041
Al menos si usa mientras (verdadero) la persona que lee el código parece más probable que lo entienda ... – PeterT