Java continúa y rompe las palabras clave

1. Información general

En este artículo rápido, vamos a introducir continuar y romper palabras clave de Java y nos concentramos en la forma de utilizarlos en la práctica.

En pocas palabras, la ejecución de estas declaraciones provoca la ramificación del flujo de control actual y finaliza la ejecución del código en la iteración actual.

2. La declaración de descanso

La declaración de interrupción viene en dos formas: sin etiqueta y etiquetada.

2.1. Descanso sin etiquetar

Podemos usar la instrucción sin etiquetar para terminar un bucle for , while o do- while, así como el bloque switch-case :

for (int i = 0; i < 5; i++) { if (i == 3) { break; } }

Este fragmento define un bucle for que se supone que se repite cinco veces. Pero cuando el contador es igual a 3, la condición if se vuelve verdadera y la instrucción break termina el ciclo. Esto hace que el flujo de control se transfiera a la instrucción que sigue después del final del ciclo for .

En el caso de bucles anidados, una declaración de interrupción sin etiqueta solo termina el bucle interno en el que se encuentra . Los bucles externos continúan la ejecución:

for (int rowNum = 0; rowNum < 3; rowNum++) { for (int colNum = 0; colNum < 4; colNum++) { if (colNum == 3) { break; } } }

Este fragmento tiene bucles for anidados . Cuando colNum es igual a 3, si la condición se evalúa como verdadera y la instrucción break hace que finalice el ciclo for interno . Sin embargo, el bucle for externo continúa iterando.

2.2. Rotura etiquetada

También podemos usar una instrucción break etiquetada para terminar un ciclo for , while o do- while. Una rotura etiquetada termina el bucle exterior .

Tras la terminación, el flujo de control se transfiere a la declaración inmediatamente después del final del ciclo externo:

compare: for (int rowNum = 0; rowNum < 3; rowNum++) { for (int colNum = 0; colNum < 4; colNum++) { if (rowNum == 1 && colNum == 3) { break compare; } } }

En este ejemplo, introdujimos una etiqueta justo antes del bucle exterior. Cuando rowNum es igual a 1 y colNum es igual a 3, la condición if se evalúa como verdadera y la sentencia break termina el ciclo externo.

A continuación, el flujo de control se transfiere a la declaración que sigue al final del ciclo for externo .

3. La declaración de continuación

La declaración continue también viene en dos formas: sin etiqueta y etiquetada.

3.1. Continuar sin etiquetar

Podemos usar una declaración sin etiquetar para omitir la ejecución del resto de las declaraciones en la iteración actual de un ciclo for , while o do- while. Salta al final del bucle interno y continúa el bucle :

int counter = 0; for (int rowNum = 0; rowNum < 3; rowNum++) { for (int colNum = 0; colNum < 4; colNum++) { if (colNum != 3) { continue; } counter++; } }

En este fragmento, siempre que colNum no es igual a 3, la instrucción continue sin etiquetar omite la iteración actual, omitiendo así el incremento del contador de variables en esa iteración. Sin embargo, el bucle for externo continúa iterando. Entonces, el incremento del contador ocurre solo cuando colNum es igual a 3 en cada iteración del ciclo for externo .

3.2. Etiquetado continuar

También podemos usar una declaración de continuación etiquetada que omite el ciclo externo. Al saltar, el flujo de control se transfiere al final del ciclo externo, continuando efectivamente la iteración del ciclo externo:

int counter = 0; compare: for (int rowNum = 0; rowNum < 3; rowNum++) { for (int colNum = 0; colNum < 4; colNum++) { if (colNum == 3) { counter++; continue compare; } } }

Introdujimos una etiqueta justo antes del bucle exterior. Siempre que colNum es igual a 3, se incrementa el contador de variables . La instrucción continue etiquetada hace que se omita la iteración del bucle for externo .

El flujo de control se transfiere al final del ciclo for externo , que continúa con la siguiente iteración.

4. Conclusión

En este tutorial, hemos visto diferentes formas de usar las palabras clave romper y continuar como declaraciones de ramificación en Java.

El código completo presentado en este artículo está disponible en GitHub.