Continue and break can change the execution flow of the loop, but in multiple loops, these two statements cannot jump directly from the inner loop to the outer loop. In C language, multiple loop jumps can be achieved through goto statements, but using goto statements in a non-loop structure will cause the program's structure to be disordered and the readability will be worse. Therefore, Java invented a tagged continue and break statement, which is actually a goto statement with restrictions specifically for loops.
Usually, the continue (or break) statement we use does not have a label, which means that the continue (or break) statement is executed in the current loop by default. A loop with labels actually gives the loop a name. When using the "continue (or break) + tag" statement, it is actually executing the continue (or break) statement in the loop where the tag is located.
Now let's use three examples to illustrate a labeled loop.
1. Double loop without labels
package javaleanning;public class LableTest {public static void main(String[] args) {for(int i = 0; i < 10; i++){for(int j = 0; j < 10; j++){System.out.print("("+i+","+j+") ");}System.out.println();}}}Running results
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9)
(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9)
(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9)
(3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9)
(4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) (4,8) (4,9)
(5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (5,8) (5,9)
(6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) (6,8) (6,9)
(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) (7,8) (7,9)
(8,0) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) (8,7) (8,8) (8,9)
(9,0) (9,1) (9,2) (9,3) (9,4) (9,5) (9,6) (9,7) (9,8) (9,9)
2. Double loop with labels, "break+label" statement
In this example, it is a double for loop. We label the beginning of the outer loop (that is, give the outer loop a name) "outerCycle". When using "break outerCycle" in the inner loop, it is equivalent to directly using the break statement in the outerCycle loop.
package javaleanning; public class LableTest {public static void main(String[] args) {outerCycle:for(int i = 0; i < 10; i++){for(int j = 0; j < 10; j++){if(j == 5){break outerCycle;}System.out.print("("+i+","+j+") ");}System.out.println();}}}Running results
(0,0) (0,1) (0,2) (0,3) (0,4)
3. Double loop with labels, "continue+label" statement
In this example, it is a double for loop. We label the beginning of the outer loop (that is, give the outer loop a name) "outerCycle". When using "continue outerCycle" in the inner loop, it is equivalent to directly using the continue statement in the outerCycle loop.
package javaleanning;public class LableTest {public static void main(String[] args) {outerCycle:for(int i = 0; i < 10; i++){for(int j = 0; j < 10; j++){if(j == 5){continue outerCycle;}System.out.print("("+i+","+j+") ");}System.out.println();}}}Running results
(0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) (5,0) (5,1) (5,2) (5,3) (5,4) (6,0) (6,1) (6,2) (6,3) (6,4) (7,0) (7,1) (7,2) (7,3) (7,4) (8,0) (8,1) (8,2) (8,3) (8,4) (9,0) (9,1) (9,2) (9,3) (9,4)
Note: The actual running results are all displayed on one line (that is, no line break statement is executed). Now such display results are only for the reasons of layout.