Home  >  Article  >  Java  >  An in-depth analysis of the role of labels in Java loops

An in-depth analysis of the role of labels in Java loops

高洛峰
高洛峰Original
2017-01-22 16:35:431237browse

continue and break can change the execution flow of the loop, but in multiple loops, these two statements cannot directly jump 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 non-loop structures will make the program structure disordered and make the readability worse. Therefore, Java invented a labeled continue and break statement. In fact, it is a restricted goto statement specially used for loops.

Normally, the continue (or break) statement we use does not have a label. In this case, the continue (or break) statement is executed in the current loop by default. A labeled loop actually gives the loop a name. When using the "continue (or break) + label" statement, it actually executes the continue (or break) statement in the loop where the label is located.

Now we use three examples to illustrate labeled loops.

1. Unlabeled double loop

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 result

(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. Labeled double loop , the "break+label" statement

is a double for loop in this example. We added a label to the beginning of the outer loop (that is, giving the outer loop a name) "outerCycle", and the inner loop When using "break outerCycle" in a loop, it is equivalent to using the break statement directly in the outerCycle cycle.

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 result

(0,0) (0,1) (0,2) (0,3) (0,4)

3. Labeled double loop, "continue+label "The statement

in this example is a double for loop. We added a label to the beginning of the outer loop (that is, giving the outer loop a name) "outerCycle", and used "continue" in the inner loop. outerCycle", it is equivalent to using the continue statement directly in the outerCycle cycle.

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();
}
}
}

Run 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). The current display results are only for typesetting reasons

More in-depth analysis of Java For related articles on the role of tags in loops, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn