十一、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 ,在满足条件时提前结束本次循环。