Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?

news2024/9/22 14:03:12

🌐在Java编程中,breakcontinue是两个重要的控制流语句,它们允许开发者根据特定条件改变程序的执行流程。虽然两者都用于中断当前的行为,但它们的作用方式不同。本文将通过生动的例子来详细解释这两个语句,并使用流程图和表格帮助读者更好地理解它们的区别。

🟠break 和 continue 的区别说白了就是一个是跳出整个循环,一个是跳过本次循环。

下面我们将展开详细讲解。


⭕break 语句

🌐break语句用来立即退出最内层的循环或switch结构。一旦遇到break,程序就会停止执行当前循环体内的剩余部分,并跳出整个循环。

🔺break 在循环语句执行流程

🔸执行流程分析:
  1. 程序进入循环。

  2. 执行循环体。

  3. 如果遇到 break,立即跳出循环

  4. 跳出后,继续执行循环后面的代码。

简单例子:

public class BreakExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                break; // 当 i 等于 5 时,跳出循环
            }
            System.out.println(i);
        }
    }
}

接下来我们通过这个简单例子分析一下break执行的流程图

📰break在 循环语句流程图

例子 - 寻找宝藏

想象一下你是一位寻宝者,在一片广阔的森林里寻找宝藏。你知道宝藏埋藏在某个特定的位置,但不知道确切的地点。每向前走一步,你就检查脚下是否有宝藏。一旦找到宝藏,就不再需要继续前进,这时就可以使用break语句了。

public class TreasureHunter {
    public static void main(String[] args) {
        int treasureLocation = 7; // 假设宝藏位于第7步
        for (int step = 1; step <= 10; step++) {
            if (step == treasureLocation) {
                System.out.println("宝藏找到了!在第 " + step + " 步!");
                break; // 找到宝藏后退出循环
            }
            System.out.println("走了 " + step + " 步,还没有找到宝藏...");
        }
    }
}

这个程序模拟了寻宝的过程,当走到第7步时发现宝藏并结束搜索。

🔺break 在switch语句执行流程

  • breakswitch 语句中主要用于防止“穿透”,即避免在匹配到一个 case 后继续执行其他 case 的代码。

  • 如果没有 break,程序将执行所有后续的 case,这在大多数情况下并不是我们想要的行为。

🔸执行流程分析:
  1. 程序执行 switch 语句,匹配表达式的值。

  2. 根据表达式的值,程序依次检查每个 case

  3. 当找到匹配的 case 时,执行该 case 下的代码。

  4. break 语句中断 switch 语句的执行,跳出整个 switch 块。

  5. 如果没有 break,则程序会继续执行后续的 case 代码,即使不匹配。【case穿透现象】

📰break在循环语句流程图

例子 - 星期几的活动安排

假设你根据星期几来决定每天要做什么活动。我们可以用switch语句来实现这个逻辑,并使用break来确保每个case都是独立的。

public class WeeklyActivities {
    public static void main(String[] args) {
        String dayOfWeek = "Monday"; // 可以更改为其他天数进行测试
        switch (dayOfWeek) {
            case "Monday":
                System.out.println("今天是周一,准备开始新的一周!");
                break;
            case "Tuesday":
                System.out.println("今天是周二,参加团队会议。");
                break;
            case "Wednesday":
                System.out.println("今天是周三,处理邮件和文档。");
                break;
            case "Thursday":
                System.out.println("今天是周四,完成项目报告。");
                break;
            case "Friday":
                System.out.println("今天是周五,庆祝一周的工作结束!");
                break;
            case "Saturday":
                System.out.println("今天是周六,享受周末时光!");
                break;
            case "Sunday":
                System.out.println("今天是周日,休息一下,为下周做准备。");
                break;
            default:
                System.out.println("未知的一天,请检查输入。");
                break;
        }
    }
}

这段代码走到case "Monday"的时候匹配成功,退出整个switch语句。


⭕continue 语句

🌐continue语句不会终止整个循环,而是跳过当前迭代中的剩余代码,并直接开始下一次迭代。这适用于想要忽略某些情况而不完全停止循环的情形。

continue执行流程

🔸执行流程分析:
  1. 程序进入循环。

  2. 执行循环体。

  3. 如果遇到 continue,跳过本次循环剩余部分,直接进入下一次循环。

  4. 如果没有 continue,则正常执行本次循环。

简单例子:

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                continue; // 当 i 等于 5 时,跳过后续的代码,直接进入下一次循环
            }
            System.out.println(i);
        }
    }
}

接下来我们通过这个简单例子分析一下break执行的流程图

📰流程图

例子 - 避开陷阱

现在,假设你在森林中不仅寻找宝藏,还要小心地避开陷阱。每一步都要检查是否踩到了陷阱。如果踩到了陷阱,你需要绕过去而不是停下来,这时就可以使用continue语句了。

public class TrapAvoider {
    public static void main(String[] args) {
        int[] traps = {2, 5, 8}; // 假设陷阱位于第2、5、8步
        for (int step = 1; step <= 10; step++) {
            boolean isTrap = false;
            for (int trap : traps) {
                if (step == trap) {
                    System.out.println("警告!在第 " + step + " 步发现了陷阱!");
                    isTrap = true;
                    break; // 发现陷阱后跳出内部循环
                }
            }
            if (isTrap) {
                continue; // 绕过陷阱,进入下一次迭代
            }
            System.out.println("安全走过第 " + step + " 步...");
        }
    }
}

这段代码展示了如何在每一步检查是否存在陷阱,并且在发现陷阱时跳过该步骤。


⭕break 和 continue 的区别和联系

下面是一个表格,概述了breakcontinue之间的主要区别:

特征breakcontinue
功能立即退出循环跳过本次循环的剩余部分
影响范围最内层的循环或switch仅影响当前循环迭代(本次循环)
使用场景当找到目标或满足特定条件时退出循环忽略某些不需要处理的情况

break 彻底终止循环,而 continue 只是跳过当前迭代。

break 适用于需要停止整个循环的场景,比如当任务完成或不需要继续处理时。

continue 适用于需要跳过某些不符合条件的数据继续下一轮处理的场景。

❗注意

在循环嵌套的情况下,break和continue影响的都是最内层的循环,不会影响最内层的循环外的其他循环


总结

  • breakcontinue 是 Java 中非常常见且重要的跳转语句,它们帮助我们更灵活地控制循环的执行。通过使用 break,我们可以在特定条件下终止整个循环,而 continue 则允许我们跳过某次循环,继续执行下一次迭代。在不同的场景下,这两者能够显著提升代码的可读性和性能。
  • 通过这篇文章,我们了解了 breakcontinue 的概念、应用场景、执行流程以及它们之间的区别与联系。在实际编程中,合理地使用这两种跳转语句,可以让代码更高效、更清晰。

 🌐欢迎点赞、评论、收藏和关注🌐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Redis][Set]详细讲解

目录 0.前言1.常用命令1.SADD2.SMEMBERS3.SISMEMBER4.SCARD5.SPOP6.SMOVE7.SREM 2.集合间操作0.是什么&#xff1f;1.SINTER2.SINTERSTORE3.SUNION4.SUNIONSTORE5.SDIFF6.SDIFFSTORE 3.内部编码1.intset(整数集合)2.hashtable(哈希表) 4.使用场景 0.前言 集合类型也是保存多个字…

SpringBoot 整合 Caffeine 实现本地缓存

目录 1、Caffeine 简介1.1、Caffeine 简介1.2、对比 Guava cache 的性能主要优化项1.3、常见的缓存淘汰算法1.4、SpringBoot 集成 Caffeine 两种方式 2、SpringBoot 集成 Caffeine 方式一2.1、缓存加载策略2.1.1、手动加载2.1.2、自动加载【Loading Cache】2.1.3、异步加载【As…

智能AC管理系统信息泄露漏洞

文章目录 免责声明漏洞描述搜索语法漏洞复现yaml修复建议 免责声明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 智能AC管理系统是一个控制管理系统因存在未授权访问导致信息泄露 搜…

大厂面试真题:SpringBoot的核心注解

其实理解一个注解就行了&#xff20;SpringBootApplication&#xff0c;我们的启动类其实就加了这一个 但是这么答也不行&#xff0c;因为面试官要的答案肯定不止这一个 我们打开SpringBootApplication的源码&#xff0c;会发现上面加了一堆的注解 相对而言比较重要是下面三个…

【微处理器系统原理与应用设计第十三讲】通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信&#xff0c;并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART&#xff08;串口&#xff09;与用户设备&#xff08;上位机&#xff0…

YOLO原理实现

YOLO&#xff08;You Only Look Once&#xff09;是一个标志性的目标检测模型&#xff0c;可以快速分类并定位图像中的多个对象。本文总结了YOLO模型中所有关键的数学操作。 第一步&#xff1a;定义输入 要使用YOLO模型&#xff0c;首先必须将RGB图像转换为448 x 448 x 3的张…

詹妮弗洛佩兹25年发9张专辑3张是关于阿弗莱克的,爱恨情仇之深可见一斑!新专辑已定时间表!

詹妮弗洛佩兹25年共发9张专辑&#xff0c;有3张是关于本阿弗莱克的 内部人爆詹妮弗洛佩兹已定制作与本阿弗莱克的“心碎”专辑时间表 虽然詹妮弗洛佩兹最近的专辑《This Is Me…Now》以失败告终&#xff0c;但她可能已经准备好重返音乐工作室。但这一次&#xff0c;她将推出一…

prometheus概念

一、Prometheus概述 1.prometheus概念&#xff1a;开源的系统监控和告警系统&#xff0c;在k8s分布式的容器化管理系统当中&#xff0c;一般都是搭配promethuse来进行监控&#xff1b;是一个服务监控系统&#xff0c;同时也可以监控主机&#xff0c;自带数据库&#xff0c;名字…

提升编程效率的秘诀:多数人竟然忽略了它!

在编程学习的过程中&#xff0c;许多人会专注于算法、数据结构、编程语言的学习&#xff0c;而往往忽略了一个至关重要的基础技能——键盘盲打。虽然看似与编程能力无关&#xff0c;但盲打不仅可以显著提高编程效率&#xff0c;还能帮助编程者更好地集中注意力。本文将深入探讨…

无人机集群路径规划:​北方苍鹰优化算法(Northern Goshawk Optimization,NGO)​求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

Django学习实战之评论验证码功能(附A)

前言&#xff1a; 对于具有评论功能的博客来说&#xff0c;无论是否为知名博客&#xff0c;都会被恶意广告关注&#xff0c;上线没几天就会有人开始通过程序灌入广告评论&#xff0c;因此针对所有有用户输入的页面&#xff0c;验证码是必需品。 在Django系统中使用验证码非常简…

【面经】查找中常见的树数据结构

查找中常见的树数据结构 一、二叉排序&#xff08;搜索、查找&#xff09;树&#xff08;BST&#xff0c;Binary Search Tree&#xff09;&#xff08;1&#xff09;二叉排序树的查找、插入和删除过程&#xff08;2&#xff09;叉树排序树的缺陷&#xff08;3&#xff09;二叉排…

深度学习02-pytorch-04-张量的运算函数

在 PyTorch 中&#xff0c;张量&#xff08;tensor&#xff09;运算是核心操作之一&#xff0c;PyTorch 提供了丰富的函数来进行张量运算&#xff0c;包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途&#xff1a; 1. 基本数学运算 加法运算&#xff1a…

【TypeScript入坑】TypeScript 的复杂类型「Interface 接口、class类、Enum枚举、Generics泛型、类型断言」

TypeScript入坑 Interface 接口简介接口合并TS 强校验Interface 里支持方法的写入class 类应用接口接口之间互相继承接口定义函数interface 与 type 的异同小案例 class 类类的定义与继承类的访问类型构造器 constructor静态属性&#xff0c;Setter 和 Getter做个小案例抽象类 …

Tomcat中BIO和NIO的区别(Tomcat)

BIO Tomcat中BIO的模型和理论很简单&#xff0c;例图如下 1.Acceptor线程死循环阻塞接收客户端的打过来的socket请求 2.接收到请求之后打包成一个SocketProcessor&#xff08;Runnable&#xff09;&#xff0c;扔到线程池中读取/写入数据 参数配置 1.Acceptor默认线程是1&#…

Day06微信小程序微信登录

微信小程序微信登录 1. 第一&#xff1a;小程序要先发给后端code(只能用一次)&#xff0c; 2. 后端要结合数据发给&#xff08;用get的方式&#xff09; https://api.weixin.qq.com/sns/jscode2session 数据&#xff1a; appidstring小程序的appIdsecretstring小程序的app…

华为为什么要做三折叠屏手机?

前些天我做了一条视频&#xff0c;关于讲华W的新的三折叠屏手机。我说我有点失望&#xff0c;结果引起了华W的同事的一些关注。于是&#xff0c;华W几位高管都跑过来&#xff0c;跟我解释为什么会出现这样的一个状态。 我才知道&#xff0c;这款手机他们其实是亏着钱在卖的。因…

【大模型实战篇】关于Bert的一些实操回顾以及clip-as-service的介绍

最近在整理之前的一些实践工作&#xff0c;一方面是为了笔记记录&#xff0c;另一方面也是自己做一些温故知新&#xff0c;或许对于理解一些现在大模型工作也有助益。 1. 基于bert模型实现中文语句的embedding编码 首先是基于bert模型实现中文语句的embedding编码&#xff0c;…

使用库函数点亮一个LED灯

软件设计 STM32Gpio的介绍 如果想让LED0点亮&#xff0c;那么R12就要是高电平&#xff0c;LED0就要是低电平&#xff0c;也就是PF9就是低电平 F407系统主频要工作在168MHZ F103的话是工作在72mhz F429的话就180MHZ 接着我们就要使能Gpio的时钟&#xff0c;使能之后对GPIO相关…

ES7 -- ES13

1. ES7 – 2016 1. 数组的includes方法 数组中是否包含某个元素&#xff0c;返回值为boolean let arr [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; arr.includes(5); // true2. ** 幂次方 let res 2 ** 3; // 82. ES8 --2017 1. 字符串补全 基本使用 let str 123;str.padStart…