Java 学习25:break 和 continue 语句

在 Java 中,break 和 continue 是两种常用的控制流语句,用于控制循环或 switch 语句的执行流程。它们的功能和使用场景各有不同,以下是详细说明。

一、break 语句

break 用于退出循环或 switch 语句。

例:在数组中找到目标值 333 时退出搜索。

java 复制代码
public static void main(String[] args) {
    int[] intary = { 99,12,22,34,45,67,333,8990 };
    int num = 333;
    int i = 0;
    boolean found = false;
    for ( ; i < intary.length; i++) { //变量i需要在for的外部声明,因为外部语句也用它
        if (num == intary[i] ) {
            found = true;
            break; //找到目标值时退出搜索
        }
    }
    if (found) {
        System.out.println(num + " 元素的索引位置在: " + i);
    }
    else {
        System.out.println(num + " 元素不在数组中");
    }
}

运行结果:

333 元素的索引位置在: 6

二、continue 语句

continue 用于退出本次循环,继续进入下一次循环。

例:输出 10 以内的奇数,跳过偶数。

java 复制代码
public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue; // 如果是偶数,结束本次循环
        }
        System.out.print(i + "\t");
    }
}

三、break 和 continue 的区别

1. 功能区别: break 直接退出循环。 continue 退出本次循环,继续进入下一次循环。

2. 使用场景区别: break 常用于提前终止循环,例如在找到目标值时退出搜索。 continue 常用于跳过不需要处理的元素,例如过滤无效数据。

四、嵌套循环中的 break 语句

当两个循环嵌套时,如果 break 语句位于内层循环,它只会退出内层循环,但不会退出外层循环。

例:

java 复制代码
public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (i == 1 && j == 1) {
                break; // 跳出内层循环
            }
            System.out.println("i: " + i + ", j: " + j);
        }
    }
}

运行结果:

i: 0, j: 0

i: 0, j: 1

i: 0, j: 2

i: 1, j: 0

i: 2, j: 0

i: 2, j: 1

i: 2, j: 2

五、带标签的 break 语句

带标签的 break 语句,是 Java 对 break 语句的一种扩展形式,用来处理退出多层嵌套循环这个问题。

标签(Label)是一种用于标识代码块的标识符。标签可以是任何合法有效的 Java 标识符,后面跟一个冒号。

标签的语法形式:

labelName:

带标签的 break 语句可以从多层嵌套循环中直接退出。使用时,标签要写在多层嵌套循环代码块的上面,而 break 语句后面要带着标签名。

例:用带标签的 break 语句退出外层循环。

java 复制代码
public static void main(String[] args) {
    outerLoop: // 标签
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (i == 1 && j == 1) {
                break outerLoop; // 带标签的break
            }
            System.out.println("i: " + i + ", j: " + j);
        }
    }
}

运行结果:

i: 0, j: 0

i: 0, j: 1

i: 0, j: 2

i: 1, j: 0

**注意:**使用带标签的 break 语句退出多层嵌套循环时,被加标签的代码块必须包围 break 语句。也就是说,带标签的 break 语句只能用于退出它所在的多层嵌套循环,而不能用于跳转到不包含它的代码块。也就是说,带标签的 break 语句并不是 goto 语句。

同时,除了有带标签的 break 外,java 中还有带标签的 continue,用于退出外部循环的本次执行,继续进入外部循环的下一次执行。

相关推荐
Icoolkj3 小时前
手机物理内存云共享—技术挑战与突破路径分析
java·服务器·智能手机
Hello.Reader3 小时前
Flink DataStream API 基础构件DataStream × Partitioning × ProcessFunction
java·大数据·flink
今日说"法"3 小时前
Rust 内存泄漏的检测与防范:超越安全的实践指南
java·安全·rust
欠你一个bug3 小时前
Java设计模式应用--装饰器模式
java·设计模式·装饰器模式
兔兔爱学习兔兔爱学习8 小时前
Spring Al学习7:ImageModel
java·学习·spring
lang201509289 小时前
Spring远程调用与Web服务全解析
java·前端·spring
m0_5642641810 小时前
IDEA DEBUG调试时如何获取 MyBatis-Plus 动态拼接的 SQL?
java·数据库·spring boot·sql·mybatis·debug·mybatis-plus
崎岖Qiu10 小时前
【设计模式笔记06】:单一职责原则
java·笔记·设计模式·单一职责原则
Hello.Reader10 小时前
Flink ExecutionConfig 实战并行度、序列化、对象重用与全局参数
java·大数据·flink