本文主要阐述:控制循环结构的break和continue关键字,break outer和continue outer的用法,以及使用return结束方法,
使用break结束循环
break用于完全结束一个循环,跳出循环体。不管是哪种循环结构,只要碰到break,系统就会完全结束该循环。
值得注意的是:break默认是完全结束该循环,如果想要直接结束外层循环,则需在外层循环之前增加 outer: 标签,此时break outer结构将直接结束外层循环;
注意:java中outer标签一定要放在循环前才能起作用;
例:
break
public class BreakTest {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 1; j < 5; j++) {
System.out.println("此时i="+i+",j="+j);
if (j == 2) {
break;
}
}
}
System.out.println("循环结束");
}
}
/**
* 此时i=0,j=1
* 此时i=0,j=2
* 此时i=1,j=1
* 此时i=1,j=2
* 此时i=2,j=1
* 此时i=2,j=2
* 此时i=3,j=1
* 此时i=3,j=2
* 此时i=4,j=1
* 此时i=4,j=2
* 循环结束
**/
break outer
public class BreakTest {
public static void main(String[] args) {
outer:
for (int i = 0; i < 5; i++) {
for (int j = 1; j < 5; j++) {
System.out.println("此时i="+i+",j="+j);
if (j == 2) {
break outer;
}
}
}
System.out.println("循环结束");
}
}
/**
* 输出
* 此时i=0,j=1
* 此时i=0,j=2
* 循环结束
**/
使用continue结束循环
与break不同的是, continue只是忽略本次循环的剩余语句,直接开始下一次循环,而不会完全终止该循环,而break是完全终止循环本身。
同样的是,也可continue outer方式结束循环,outer标签需在某一循环之前定义,它将会忽略outer中所指定的循环中本次循环所剩下的语句,但不会影响下次循环。
例:
continue
public class BreakTest {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
for (int j = 1; j < 4; j++) {
System.out.println("此时i="+i+",j="+j);
if (j == 2) {
continue;
}
System.out.println("内层循环第"+j+"次完整执行");
}
System.out.println("外层循环第"+(i+1)+"次完整执行");
}
}
}
/*
此时i=0,j=1
内层循环第1次完整执行
此时i=0,j=2
此时i=0,j=3
内层循环第3次完整执行
外层循环第1次完整执行
此时i=1,j=1
内层循环第1次完整执行
此时i=1,j=2
此时i=1,j=3
内层循环第3次完整执行
外层循环第2次完整执行
此时i=2,j=1
内层循环第1次完整执行
此时i=2,j=2
此时i=2,j=3
内层循环第3次完整执行
外层循环第3次完整执行
*/
continue outer
public class BreakTest {
public static void main(String[] args) {
outer:
for (int i = 0; i < 3; i++) {
for (int j = 1; j < 4; j++) {
System.out.println("此时i="+i+",j="+j);
if (j == 2) {
continue outer;
}
System.out.println("内层循环第"+j+"次完整执行");
}
System.out.println("外层循环第"+(i+1)+"次完整执行");
}
}
}
/*
此时i=0,j=1
内层循环第1次完整执行
此时i=0,j=2
此时i=1,j=1
内层循环第1次完整执行
此时i=1,j=2
此时i=2,j=1
内层循环第1次完整执行
此时i=2,j=2
*/
使用return结束方法
与break和continue不同的是,return将直接结束整个方法。不管return处于多少层循环之内,他都将完全结束该方法。
例:
public class BreakTest {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println("第一层循环执行"+(i+1)+"次");
for (int j = 0; j < 3; j++) {
System.out.println("第二层循环执行"+(j+1)+"次");
for (int t = 0; t < 3; t++) {
System.out.println("第三层循环执行"+(t+1)+"次");
for (int k = 0; k < 3; k++) {
System.out.println("第四层循环执行"+(k+1)+"次");
return;
}
}
}
}
}
}
/*
第一层循环执行1次
第二层循环执行1次
第三层循环执行1次
第四层循环执行1次
*/