Skip to content

跳转语句

改变程序执行流程的三种语句:break、continue 和 return。

break 语句

终止 switch 语句或循环语句。

在循环中使用

java
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (arr[i][j] == target) {
            System.out.println("找到:" + i + ", " + j);
            break;  // 跳出内层循环
        }
    }
}

使用标签跳出外层循环

java
outer:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i == 2 && j == 2) {
            break outer;  // 跳出外层循环
        }
        System.out.println("(" + i + "," + j + ")");
    }
}

// 输出:(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) 条件后跳出整个外层循环

continue 语句

跳过当前循环的剩余语句,继续下一次循环。

基本示例

java
// 打印 1-100 的奇数
for (int i = 1; i <= 100; i++) {
    if (i % 2 == 0) {
        continue;  // 跳过偶数
    }
    System.out.println(i);
}

在嵌套循环中使用

java
// 跳过某个条件的处理
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i == j) {
            continue;  // 跳过 i == j 的情况
        }
        System.out.println("(" + i + "," + j + ")");
    }
}

// 使用标签跳到外层循环的下一次迭代
outer:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i == 2 && j == 2) {
            continue outer;  // 跳到外层循环的下一次迭代
        }
        System.out.println("(" + i + "," + j + ")");
    }
}

return 语句

终止方法的执行,并返回值(如果有)。

基本用法

java
public int add(int a, int b) {
    return a + b;  // 返回结果并结束方法
}

public void printUntilZero() {
    Scanner scanner = new Scanner(System.in);

    while (true) {
        int num = scanner.nextInt();
        if (num == 0) {
            return;  // 结束方法
        }
        System.out.println("输入了:" + num);
    }
}

提前返回

用卫语句处理边界情况,保持主逻辑清晰。

java
public String getGrade(int score) {
    if (score < 0) {
        return "无效分数";
    }
    if (score > 100) {
        return "无效分数";
    }
    if (score >= 90) {
        return "A";
    } else if (score >= 80) {
        return "B";
    }
    // ...
}

三者对比

语句作用范围说明
breakswitch、循环终止 switch 或跳出当前循环
continue循环跳过本次循环,继续下一次
return方法结束方法执行,返回值

break vs continue

java
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

System.out.println("使用 break:");
for (int num : arr) {
    if (num == 5) {
        break;  // 找到 5 后终止循环
    }
    System.out.print(num + " ");  // 输出:1 2 3 4
}

System.out.println("\n使用 continue:");
for (int num : arr) {
    if (num % 2 == 0) {
        continue;  // 跳过偶数,继续下一次
    }
    System.out.print(num + " ");  // 输出:1 3 5 7 9
}

break vs return

java
// break:结束循环,继续执行后面的代码
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }
    System.out.println(i);
}
System.out.println("循环后的代码");  // 这行会执行

// return:结束整个方法
public void test() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            return;  // 结束整个方法
        }
        System.out.println(i);
    }
    System.out.println("方法中的后续代码");  // 这行不会执行
}

最佳实践

使用卫语句减少嵌套

java
// ❌ 嵌套过深
public void process(Order order) {
    if (order != null) {
        if (order.getItems() != null) {
            if (order.getItems().size() > 0) {
                for (Item item : order.getItems()) {
                    if (item.isValid()) {
                        // 处理逻辑
                    }
                }
            }
        }
    }
}

// ✅ 使用卫语句
public void process(Order order) {
    if (order == null) return;
    if (order.getItems() == null) return;
    if (order.getItems().isEmpty()) return;

    for (Item item : order.getItems()) {
        if (!item.isValid()) continue;
        // 处理逻辑
    }
}

循环中用 return 查找

java
public int findIndex(List<String> list, String target) {
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).equals(target)) {
            return i;  // 找到后立即返回
        }
    }
    return -1;  // 未找到
}

注意事项

break 只跳出一层循环

java
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            break;  // 只跳出内层循环
        }
        System.out.println("(" + i + "," + j + ")");
    }
}
// 输出:(0,0) (0,1) (0,2) (1,0) (2,0) (2,1) (2,2)

return 在 try-finally 中

finally 块无论是否 return 都会执行。

java
public int test() {
    try {
        return 1;
    } finally {
        System.out.println("finally 执行");
    }
}
// 输出:finally 执行
// 返回值:1

基于 VitePress 构建