摘要:介绍4种跳出循环的方式,尤其是其中的break 标签,有时候真的会成为工作中的秘密武器。

在实际编程中,有时需要在条件语句匹配的时候跳出循环。在 Java 语言里,由关键词 break 和 continue 控制。Java跳出for或者while循环的四种方式:

continue:跳出当前层循环的当前语句,执行当前层循环的下一条语句。

break:跳出当前层循环。

break+标签:多层循环时,跳到具体某层循环。

return:结束所有循环,方法内直接返回。

break和continue是老生常谈的东西,break是终止当前层循环,包括之后的本层循环,continue是终止本次循环的语句,继续之后的本层循环。

break 语句

在存在内循环的情况下,Java break 语句用来结束内循环,即不再执行当前内循环后边的所有循环,但外循环仍然继续执行。

【示例】打印当前循环坐标。

private static void breakDemo() {

for (int i = 1; i <= 3; i++) {

for (int j = 1; j <= 3; j++) {

if (i == 2 && j == 1) {

break;

}

System.out.println(i + ", " + j);

}

}

}

由输出结果可知没有打印i=2时的内循环数据:

1, 1

1, 2

1, 3

3, 1

3, 2

3, 3

分析:循环中跳过了i=2时,对内循环的遍历。

continue 语句

Java continue 语句用来终止当前操作,并继续内循环,即仅仅是这一次循环结束了,而非所有循环结束了,后边的循环依旧进行。

private static void continueDemo() {

for (int i = 1; i <= 3; i++) {

for (int j = 1; j <= 3; j++) {

if (i == 2 && j == 2) {

continue;

}

System.out.println(i + ", " + j);

}

}

}

在如下输出结果中,没有打印2, 2:

1, 1

1, 2

1, 3

2, 1

2, 3

3, 1

3, 2

3, 3

带标签的break

使用break语句只能跳出一层循环,但是在实际开发中,有时会碰到跳出到某层循环的情况,这时使用break语句就不能达到预期效果,需要搬出break 标签了。

java的标签只能定义在语句块的上方,例如while和for循环,用于跳出多重嵌套的循环语句块,如下面loop的形式定义。可以直接在内层使用break lable跳出指定的代码块。

private static void labelDemo() {

for (int i = 1; i <= 3; i++) {

loop:

for (int j = 1; j <= 3; j++) {

for (int k = 1; k <= 3; k++) {

if (j == 2) {

break loop;

}

System.out.println(i + ", " + j + ", " + k);

}

}

}

}

分析:遇到j==2的时候,就跳出循环到loop:

1, 1, 1

1, 1, 2

1, 1, 3

2, 1, 1

2, 1, 2

2, 1, 3

3, 1, 1

3, 1, 2

3, 1, 3

一言以蔽之,带标签的break的影响范围是指定标签后定义的循环语句块。

return 结束所有循环,方法内直接返回。这个容易理解,就不介绍了。

结束语

对于Wiener以上的话题,大家又有什么自己的独特见解呢?欢迎在下方评论区留言!

Reference

https://www.yiibai.com/java/java-continue.html