杰瑞科技汇

java for循环 continue

continue 是什么?

continue 是一个关键字,在循环(for, while, do-while)中使用,它的作用是立即终止**当前这一次循环的执行,然后直接跳转到循环的条件判断部分**,决定是否开始下一次循环。

java for循环 continue-图1
(图片来源网络,侵删)

continue 会跳过循环体中 continue 语句之后的所有代码,直接进入下一次迭代。


continue 的工作流程

为了更好地理解,我们来看一个标准的 for 循环结构:

for (初始化; 条件判断; 更新) {
    // 循环体
    // ...
    if (某个条件) {
        continue; // 当这个条件满足时,执行 continue
    }
    // 这里的代码在 continue 执行后会被跳过
    // ...
}

continue 语句被执行时,程序会:

  1. 跳过 continue 语句之后的所有代码。
  2. 立即执行 for 循环的更新部分i++ 或类似操作)。
  3. 重新执行**条件判断**部分(i < 10 或类似操作)。
  4. 如果条件为 true,则开始下一次循环;如果为 false,则整个循环结束。

代码示例

让我们通过几个例子来直观感受 continue 的作用。

java for循环 continue-图2
(图片来源网络,侵删)

示例 1:跳过偶数

这是 continue 最经典的用法:在循环中跳过某些特定的迭代。

public class ContinueExample {
    public static void main(String[] args) {
        System.out.println("打印 1 到 10 之间的奇数:");
        for (int i = 1; i <= 10; i++) {
            // i 是偶数 (i % 2 == 0),就跳过本次循环
            if (i % 2 == 0) {
                continue;
            }
            // 这行代码只有在 i 是奇数时才会被执行
            System.out.println("当前数字: " + i);
        }
    }
}

执行结果:

打印 1 到 10 之间的奇数:
当前数字: 1
当前数字: 3
当前数字: 5
当前数字: 7
当前数字: 9

流程分析:

  • i 为 2, 4, 6, 8, 10 时,if (i % 2 == 0) 条件为 truecontinue 语句被执行。
  • 程序跳过 System.out.println(...),直接执行 i++,然后进入下一次循环。
  • i 为 1, 3, 5, 7, 9 时,if 条件为 falsecontinue 不会执行,System.out.println(...) 正常执行。

示例 2:跳过特定值

假设我们要遍历一个数组,但不想处理值为 "Java" 的元素。

java for循环 continue-图3
(图片来源网络,侵删)
public class ContinueWithArray {
    public static void main(String[] args) {
        String[] languages = {"Python", "Java", "C++", "JavaScript", "Java", "Go"};
        System.out.println("正在学习以下编程语言,但跳过 Java:");
        for (int i = 0; i < languages.length; i++) {
            if ("Java".equals(languages[i])) {
                System.out.println("跳过 " + languages[i]);
                continue; // 跳过当前元素,处理下一个
            }
            System.out.println("正在学习: " + languages[i]);
        }
    }
}

执行结果:

正在学习以下编程语言,但跳过 Java:
正在学习: Python
跳过 Java
正在学习: C++
正在学习: JavaScript
跳过 Java
正在学习: Go

示例 3:continueif-else 的对比

continue 可以用来简化代码,避免不必要的 else 嵌套。

情况 A:不使用 continue(代码嵌套较深)

for (int i = 1; i <= 5; i++) {
    if (i % 2 == 0) {
        // 偶数,执行操作A
        System.out.println("偶数: " + i);
    } else {
        // 奇数,执行操作B
        System.out.println("奇数: " + i);
    }
}

情况 B:使用 continue(代码更扁平化)

for (int i = 1; i <= 5; i++) {
    if (i % 2 != 0) {
        // 如果是奇数,跳过下面的打印逻辑
        continue;
    }
    // 只有当 i 是偶数时,这里的代码才会执行
    System.out.println("偶数: " + i);
}

这两种写法(在简单情况下)可以达到同样的效果,但使用 continue 可以让“正常情况”的代码逻辑更清晰,减少 else 的嵌套,对于更复杂的逻辑,这种优势会更明显。


continuebreak 的关键区别

初学者经常混淆 continuebreak,这是一个非常重要的知识点。

特性 continue break
作用 终止当前循环迭代,进入下一次迭代。 完全终止整个循环的执行。
影响范围 只影响 continue 所在的那个循环。 只影响 break 所在的那个循环。
跳转到 循环的条件判断部分。 循环语句之后的第一行代码。

代码对比:

public class ContinueVsBreak {
    public static void main(String[] args) {
        System.out.println("--- 使用 continue ---");
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                continue; // 跳过 i=3 的这一次
            }
            System.out.println("continue: i = " + i);
        }
        System.out.println("\n--- 使用 break ---");
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                break; // 当 i=3 时,整个循环结束
            }
            System.out.println("break: i = " + i);
        }
    }
}

执行结果:

--- 使用 continue ---
continue: i = 1
continue: i = 2
continue: i = 4
continue: i = 5
--- 使用 break ---
break: i = 1
break: i = 2

带标签的 continue (Labeled continue)

在嵌套循环中,continue 默认只作用于它所在的最近的一层循环,如果你想跳出多层循环,或者指定跳出某个特定的外层循环,可以使用带标签的 continue

语法:

outerLoop: // 这是一个标签
for (int i = 0; i < 3; i++) {
    innerLoop:
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            continue outerLoop; // 跳转到 outerLoop 循环的下一次迭代
        }
        System.out.println("i = " + i + ", j = " + j);
    }
}

执行结果:

i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 2, j = 0  // 注意:当 i=1, j=1 时,continue outerLoop 跳过了整个内层循环的剩余部分,直接进入 i=2
i = 2, j = 1
i = 2, j = 2

分析:i=1j=1 时,continue outerLoop 不会继续执行内层循环,而是直接跳转到外层循环 outerLoopi++ 部分,然后进行下一次外层循环。i=1 的整个内层循环都被跳过了。

注意:带标签的 break 也有类似的用法,是用来直接跳出被标记的那个循环。

  • continue 用于跳过当前循环的剩余代码,直接进入下一次循环。
  • 它常用于过滤数据或跳过特定条件的处理。
  • continuebreak 的区别是关键:continue 是“跳过一次”,break 是“彻底退出”。
  • 在嵌套循环中,可以使用带标签的 continue 来控制跳转到指定的外层循环
分享:
扫描分享到社交APP
上一篇
下一篇