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.xdnf.cn/news/146805.html

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

相关文章

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景&#xff1a; VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析&#xff1a; 虚拟机开启后会对部分文件继续加密&#xff0c;关闭时虚拟机会自动对其解密&…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Transcipher:从对称加密到同态加密

摘要 本文介绍了Transcipher的概念。在Transcipher的框架下&#xff0c;用户使用高效的对称加密&#xff0c;对自己的数据进行加密&#xff0c;然后将密文和私钥的同态加密密文传输给服务器。服务器进行同态解密&#xff0c;得到用户数据同态加密的密文。Transcipher通过将计算…

分布式锁的几种方案对比?你了解多少种呢?

目录标题 1.关于分布式锁2.分布式锁的实现方案2.1 基于数据库实现2.1.1乐观锁的实现方式2.1.2 悲观锁的实现方式2.1.3 数据库锁的优缺点 2.2 基于Redis实现2.2.1 基于缓存实现分布式锁2.2.2缓存实现分布式锁的优缺点 2.3 基于Zookeeper实现2.3.1 如何实现&#xff1f;2.3.2 zk实…

1.量化第一步,搭建属于自己的金融数据库!

数据是一切量化研究的前提。 做量化没有数据&#xff0c;就相当于做饭时没有食材。 很多时候&#xff0c;我们需要从大量的数据中寻找规律&#xff0c;并从中开发出策略。如果我们每次使用的时候&#xff0c;都从网上去找数据&#xff0c;一方面效率低下&#xff0c;另一方面短…

运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。

一、问题描述 运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行&#xff0c;然后重新运行。 二、问题分析 在idea中&#xff0c;运行一个springboot项目&#xff0c;在使用大量的库和依赖的时候&#xff0c;会出现报错“命令行过长”&…

你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解

前言&#xff1a;本节主要讲解消息队列&#xff0c; 信号量的相关知识。 ——博主主要是以能够理解为目的进行讲解&#xff0c; 所以对于接口的使用或者底层原理很少涉及。 主要的讲解思路就是先讨论消息队列的原理&#xff0c; 提一下接口。 然后讲解ipc的设计——这个设计一些…

构建未来企业的理论基石:业务能力建模指南的深度解析与战略实施框架

数字化转型已经成为全球企业的战略焦点&#xff0c;在这个过程中&#xff0c;如何有效地将复杂的业务需求、技术架构和市场变化结合&#xff0c;形成具备长期竞争力的企业能力框架&#xff0c;是企业成败的关键。《业务能力指南》提供了一套经过验证的理论体系&#xff0c;帮助…

【番茄成熟度数据集】12类names

【番茄成熟度数据集】12类 names: [half-ripe, ripe, rotten tomatoes, tomato fully ripe, tomato semi ripe, tomato unripe, tomato_half_ripe, tomato_overripe, tomato_ripe, tomato_rotten, tomato_unripe, unripe] 名称: [半熟的, 成熟的, 腐烂的西红柿, 西红柿完全成熟…

centos7离线安装MySQL8

下载Mysql安装包地址 https://dev.mysql.com/downloads/mysql/解压到指定目录 [rootlocalhost tools]# tar -xvf mysql-8.4.2-1.el7.x86_64.rpm-bundle.tar -C /root/training [rootlocalhost tools]# cd ../training/ [rootlocalhost training]# ll total 1027204 -rw-r--r-…

计算机毕业设计之:基于微信小程序的诗词智能学习系统(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Spring_AMQP

文章目录 一、SpringAMQP二、SpringAMQP应用2.1、消息发送2.2、消息接收 一、SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址。 SpringAMQP提供了三个功能&am…

PMP--二模--解题--51-60

文章目录 14.敏捷--术语表--完成的定义DoD--它是团队需要满足的所有标准的核对单&#xff0c;只有可交付成果满足该核对单才能视为准备就绪可供客户使用。51、 [单选] 在冲刺计划会议上&#xff0c;Scrum主管重申&#xff0c;如果在冲刺结束时敏捷项目团队正在构建的产品增量没…

Linux:进程(四)

目录 一、进程优先级 二、Linux调度与切换 1.背景 2.进程切换 3.Linux调度 一、进程优先级 背景&#xff1a;在计算机中&#xff0c;软硬件资源是有限的&#xff0c;而进程想要访问某一种资源&#xff0c;就得通过排队来保证访问资源的过程是有条不紊的。 Linux下对优先级…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 1 简介

Push Kit&#xff08;推送服务&#xff09;是华为提供的消息推送平台&#xff0c;建立了从云端到终端的消息推送通道。所有HarmonyOS应用可通过集成Push Kit&#xff0c;实现向应用实时推送消息&#xff0c;使消息易见&#xff0c;构筑良好的用户关系&#xff0c;提升用户的感知…

Django 请求配置

http请求配置 请求流程 urls.py配置 from first_app import viewsurlpatterns [path(admin/, admin.site.urls),path(test/,views.first_test), ] views.py配置 from django.shortcuts import render,HttpResponse# Create your views here. def first_test(request):prin…

FLUX.1 ComfyUI:专属图像生成助手

FLUX.1 & ComfyUI&#xff1a;专属图像生成助手 FLUX.1 简介 FLUX.1 是由 黑森林实验室 (Black Forest Labs) 开发的一款高性能图像生成模型&#xff0c;分为以下三个版本&#xff1a; FLUX.1-pro (闭源): 最顶级的版本&#xff0c;具备极高的图像生成能力&#xff0c;支…

Python办公自动化教程(001):PDF内容提取

1、Pdfplumber介绍 pdfplumber的github地址&#xff1a; https://github.com/jsvine/pdfplumber/【介绍】&#xff1a;pdfplumber 是一个用于处理 PDF 文件的 Python 第三方库&#xff0c;它提供了一种方便的方式来提取 PDF 文件中的文本、表格和其他信息。【功能】&#xff…

2、StarGAN V2

2、StarGAN V2 StarGAN 论文链接&#xff1a;StarGAN StarGAN V2 论文链接&#xff1a;StarGAN V2 在介绍StarGAN V2之前&#xff0c;我们先对StarGAN有一定的了解&#xff0c;StarGAN V2只是在StarGAN的基础上做出了改进&#xff0c;基本的架构是没有变的&#xff0c;只是将…

SQL - 进阶语法(二)约束

1. SQL约束 约束用于约束表中的数据规则&#xff0c;如若存在违反行为&#xff0c;行为会被约束终止。 • NOT NULL 确保列不能有NULL值 如果添加一行新的数据&#xff0c;不能有null值&#xff0c;否则无法添加 新建表格 CREATE TABLE new_table( ID int NOT NULL, NAME …