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

🌐在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.mzph.cn/news/879977.shtml

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

相关文章

C++/Qt 集成 AutoHotkey

C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一&#xff1a;子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二&#xff1a;显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…

系统架构设计师 需求分析篇一

&#x1f4d8; 结构化分析SA 思想 自顶向下&#xff1a;像剥洋葱一样&#xff0c;层层深入&#xff0c;大问题拆成小问题&#xff0c;再拆成更小的问题。 核心模型 数据字典 &#x1f4d4;&#xff1a;记录数据元素的点点滴滴&#xff0c;从属性到使用方式&#xff0c;无所…

Spring自定义参数解析器

在这篇文章中&#xff0c;我们认识了参数解析器和消息转换器&#xff0c;今天我们来自定义一个参数解析器。 自定义参数解析器 实现HandlerMethodArgumentResolver的类&#xff0c;并注册到Spring容器。 Component&#xff0f;&#xff0f;注册到Spring public class UserAr…

C#解决方案的各种操作

C#开发编程软件下载安装 C#开发编程软件下载安装_c#下载安装-CSDN博客文章浏览阅读208次。。。。_c#下载安装https://rxxw-control.blog.csdn.net/article/details/140879228 C#和S7-1200PLC S7.NET通信 C#和S7-1200PLC S7.NET通信_c# s1200 s7协议设置-CSDN博客文章浏览阅读…

【Python】探索 TensorFlow:构建强大的机器学习模型

TensorFlow 是一个开源的深度学习框架&#xff0c;由 Google 开发&#xff0c;广泛应用于机器学习和人工智能领域。自从 2015 年推出以来&#xff0c;它已成为研究人员、开发者和数据科学家们不可或缺的工具。TensorFlow 提供了灵活、高效的工具集&#xff0c;可以帮助我们构建…

消息中间件---Kafka

一、什么是Kafka&#xff1f; Kafka是一个分布式流处理平台,类似于消息队列或企业消息传递系统&#xff1b; 流处理事什么呢&#xff1f; 流处理就是数据处理工作流&#xff0c;本质上是一种计算机编程范例。流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消…

【C++】—— string模拟实现

前言&#xff1a; 学习了string的使用&#xff0c;总感觉了解不是很深厚&#xff1b;自己模拟实现string类来帮助自己理解。 这里只是实现了一部分内容&#xff08;并没有实现完整的string类&#xff09;。 先来实现string类里面的成员变量&#xff1a; #include<iostream…

PyCharm的使用

PyCharm的入门使用教程 下载和安装PyCharm&#xff1a; 首先&#xff0c;访问JetBrains官方网站&#xff08;https://www.jetbrains.com/pycharm/&#xff09;下载PyCharm的最新版本。根据您的操作系统选择合适的版本进行下载。 安装完成后&#xff0c;打开PyCharm。 创建新…

记录一次显卡驱动安装

1. 驱动安装 1.1. 查看适合的版本 apt-get update ubuntu-drivers devices输出结果&#xff1a; 1.2. 安装合适的驱动版本 根据上面输出的内容 apt-get install nvidia-driver-545完成后重启 reboot查看新的驱动 nvidia-smi2. 安装/升级cuda 在nvidia-smi中显示的CUDA…

hive分区详细教程

为什么要分区&#xff1f; 为了提高sql的查询效率 比如&#xff1a; select * from orders where create_date20230826; 假如数据量比较大&#xff0c;这个sql就是全表扫描&#xff0c;速度肯定慢。 可以将数据按照天进行分区&#xff0c;一个分区就是一个文件夹&#xff0c;当…

中序遍历二叉树全过程图解

文章目录 中序遍历图解总结 中序遍历图解 首先看下中序遍历的代码&#xff0c;其接受一个根结点root作为参数&#xff0c;判断根节点是否为nil&#xff0c;不为nil则先递归遍历左子树。 func traversal(root *TreeNode,res *[]int) {if root nil {return}traversal(root.Lef…

华为HarmonyOS地图服务 5 - 利用UI控件和手势进行地图交互

场景介绍 本章节将向您介绍如何使用地图的手势。 Map Kit提供了多种手势供用户与地图之间进行交互,如缩放、滚动、旋转和倾斜。这些手势默认开启,如果想要关闭某些手势,可以通过MapComponentController类提供的接口来控制手势的开关。 接口说明 以下是地图的控件和手势相…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践&#xff08;待完成&#xff09;16个维度的prompt举例人类偏好标注&#xff1a;计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述&#xff1a;论文如何解决这个问题&…

Java免税购物商城:Spring Boot技术实现

第二章 系统开发关键技术 2.1 JAVA技术 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterrise JavaBeans&#xff09;的全面支持&#xff0c;java servlet AI&#xff0c;JS&#xff08;java server ages&#xff09…

RNN的反向传播

目录 1.RNN网络&#xff1a;通过时间反向传播(through time back propagate TTBP) 2.RNN梯度分析 2.1隐藏状态和输出 2.2正向传播&#xff1a; 2.3反向传播&#xff1a; 2.4问题瓶颈&#xff1a; 3.截断时间步分类&#xff1a; 4.截断策略比较 5.反向传播的细节 ​编辑…

植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面

一、介绍 植物病害识别系统。本系统使用Python作为主要编程语言&#xff0c;通过收集水稻常见的四种叶片病害图片&#xff08;‘细菌性叶枯病’, ‘稻瘟病’, ‘褐斑病’, ‘稻瘟条纹病毒病’&#xff09;作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算…

【后端开发】JavaEE初阶—线程的理解和编程实现

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解多线程的知识哟~~~&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;【后端开发】JavaEE初阶——计算机是如何工作的&#xff1f;&#xff1f;&#xff1f;-CSDN博客 &#x1f308;感兴趣的小伙…

Tomcat中BIO和NIO的区别(Tomcat)

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

【Godot4.x】Mesh相关知识总结

概述 很早之前发布过一篇关于几何体程序生成的文章&#xff0c;当时对于三角面和网格的构造其实还没有特别深入的认识&#xff0c;直到自己脑海里想到用二维数组和点更新的方式构造2D类型的多边形Mesh结构&#xff0c;也意识到在Godot中其实Mesh不仅是3D网格&#xff0c;也可以…

分子动力学工具篇二:Sobtop的安装与使用

文章目录 1. Sobtop的介绍1. Sobtop 的功能和特点2.主要应用场景 2.3.常见问题及解决方法 1. Sobtop的介绍 Sobtop 是一个用于自动生成分子拓扑文件的工具&#xff0c;特别是为 GROMACS 分子动力学模拟准备拓扑结构和参数。它的设计目标是通过自动化过程生成小分子、聚合物或其…