十一、break 和 continue
1 break
在循环过程中,有时我们并不想等到循环体执行结束,然后判断下一次循环是否需要继续执行;我们需要在循环体执行途中,判断是否应该强制结束循环。Java 语言提供了 break
关键字,来满足这个需求。
在循环过程中,可以使用 break
语句跳出当前循环。我们来看一个例子:
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i=1; ; i++) {
sum = sum + i;
if (i == 100) {
break;
}
}
System.out.println(sum);
}
}
使用 for
循环计算从 1 到 100 时,我们并没有在 for()
中设置循环退出的检测条件。但是,在循环内部,我们用if判断,如果 i==100
,就通过 break
退出循环。
因此,break
语句通常都是配合 if
语句使用。要特别注意,break
语句总是跳出自己所在的那一层循环。例如:
public class Hello {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
System.out.println("i = " + i);
for (int j=1; j<=10; j++) {
System.out.print("j = " + j + "; ");
if (j >= i) {
System.out.println();
break;
}
}
// break跳到这里
System.out.println("breaked");
}
}
}
输出:
i = 1
j = 1;
breaked
i = 2
j = 1; j = 2;
breaked
i = 3
j = 1; j = 2; j = 3;
breaked
i = 4
j = 1; j = 2; j = 3; j = 4;
breaked
i = 5
j = 1; j = 2; j = 3; j = 4; j = 5;
breaked
i = 6
j = 1; j = 2; j = 3; j = 4; j = 5; j = 6;
breaked
i = 7
j = 1; j = 2; j = 3; j = 4; j = 5; j = 6; j = 7;
breaked
i = 8
j = 1; j = 2; j = 3; j = 4; j = 5; j = 6; j = 7; j = 8;
breaked
i = 9
j = 1; j = 2; j = 3; j = 4; j = 5; j = 6; j = 7; j = 8; j = 9;
breaked
i = 10
j = 1; j = 2; j = 3; j = 4; j = 5; j = 6; j = 7; j = 8; j = 9; j = 10;
breaked
上面的代码是两个for
循环嵌套。因为break
语句位于内层的for
循环,因此,它会跳出内层for
循环,但不会跳出外层for
循环。
2 continue
有时,我们在循环时,会想要特意跳过某些值。例如:我们想要输出从 1 到 10 的整数,但不输出 3 。我们要怎样实现这个功能呢?
使用 break
的话,会跳出当前循环,也就是整个循环都不会执行了。这时就需要 continue
登场了,continue
是提前结束本次循环,直接继续执行下次循环。
public class Hello {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
if (i == 3)
continue;
System.out.print(i + ", ");
}
}
}
输出:1, 2, 4, 5, 6, 7, 8, 9, 10,
注意观察 continue
语句的效果。当 i
值为 3 时,本次循环会被跳过,直接执行 i++
。
在多层嵌套的循环中,continue
语句同样是结束本次自己所在的循环。
3 总结
break
语句可以跳出当前循环;
break
语句通常配合 if
,在满足条件时提前结束整个循环;
break
语句总是跳出最近的一层循环;
continue
语句可以提前结束本次循环;
continue
语句通常配合 if
,在满足条件时提前结束本次循环。