22从零开始学Java之你知道return、break与continue的区别吗?

news2025/1/17 3:36:37

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦

千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者

前言

在上一篇文章中,壹哥给大家介绍了while、do-while两种循环结构,并且给大家总结了两种循环的区别。实际上,我们在利用循环执行重复操作的过程中,还存在着另一个需求:如何中止,或者说提前结束一个循环?比如我们正在循环输出10000以内的数字,这时因为触发了某个条件,想提前中止这个循环操作该怎么办?所以今天壹哥就给大家讲解一下,如何在java代码中返回一个结果,如何结束和跳出一个循环。

-----------------------------------------------前戏已做完,精彩即开始---------------------------------------------

全文大约【2800】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图视频,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. break

1. 作用

break关键字可以用于for、while、do-while及switch语句中,用来跳出整个语句块,结束当前循环的执行。另外我们要特别注意,break语句总是跳出自己所在的那一层循环当两个for循环嵌套时,如果break语句位于内层的for循环,它只会跳出内层的for循环,但不会跳出外层的for循环。

2. 语法

break的用法很简单,我们在之前学习switch时就已经使用过了。一般就是在循环或switch语句中编写如下一条语句:

break;

比如我们使用for循环计算从1累加到100的和时,在循环内部,我们可以使用if判断,当i==50就提前利用break关键字结束循环。因此,break经常会配合if语句使用。

3. 案例

3.1 案例一

break会跳出当前for循环。当break执行后,当前整个for循环都会结束执行。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
public class Demo01 {
	public static void main(String[] args) {
		//break关键字
		
		//需求:从1累加到100,找到累加到哪个数时,就使得sum和大于888
		// 定义变量保存总和
		int sum = 0;
		
		for (int i = 1; i <= 100; i++) {
			sum = sum + i;
			if (sum > 888) {
				System.out.println("累加到"+i+"时,sum和就大于888");
				// 结束当前循环
				break;
				//这里的语句执行不到,编译阶段就会报错
				//System.out.println("能执行吗??");
			}
			//这里的语句可以执行,当break跳出循环后,就不会再继续执行
			System.out.println("能执行吗??"+i); 
		}
	}
}

大家要注意,我们不能直接在break后面跟着其他语句,否则在编译阶段就会出现”Unreachable code“,如下图所示:

3.2 案例二

需求:将输入的内容进行输出,如果输入"886"就结束当前聊天。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
​​​​​​​ * 千锋教育
 */
import java.util.Scanner;

public class Demo02 {
	public static void main(String[] args) {
		//break关键字
		Scanner sc = new Scanner(System.in);
		
		while(true){
		    String word = sc.next();
		    if(word.equals("886")){
		    	//跳出当前循环
		        break;
		    }            

            //输出内容
		    System.out.println(word);            
		}
	}
}

二. continue

1. 作用

continue适用于各种循环结构中,不能用于其他地方,用于跳过本次循环,执行下一次循环break可以跳出当前循环,即整个循环都不会执行了。而与break不同,continue是提前结束本次循环,但会继续执行下一次的循环。在多层嵌套的循环中,continue也可以通过标签指明要跳过的是哪一层循环,并且同样是只结束自己所在的循环。

2.语法

continue的用法很简单,在循环结构中直接使用如下语句即可:

continue;

3. 案例

3.1 案例一

需求:输出100以内,所有不是3的倍数的整数。使用continue结束当前循环,继续下一次循环。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
public class Demo03 {
	public static void main(String[] args) {
		//continue关键字
		
		//案例:输出100以内,所有不是3的倍数的整数
		for(int i = 1; i <= 100 ; i++){
		    if(i % 3 == 0){
		    	//结束本次循环,继续执行下次循环,并不会结束整个循环,直到完成整个循环
		        continue;
		    }        
		    System.out.println(i);            
		}
	}
}

3.2 案例二

需求:将输入的内容进行输出,如果输入"886"就结束当前聊天。如果输入了敏感词汇,则用“***”替代显示。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
import java.util.Scanner;

public class Demo04 {
	public static void main(String[] args) {
		//continue关键字
		
		//需求:将输入的内容进行输出,如果输入"886"就结束当前聊天。如果输入了敏感词汇,则用“***”替代显示
		Scanner sc = new Scanner(System.in);
		
		while(true){
		    String word = sc.next();
		    if(word.equals("886")){
		    	//跳出整个循环
		        break;
		    }            
		    
		    if(word.equals("WC")||word.equals("SB")){
		        System.out.println("***");
                //中止本次循环,继续下一次循环
		        continue;
		    }
		    System.out.println(word);            
		}
	}
}

4. 多层循环嵌套时的跳转

当多层循环嵌套时,内层循环可以使用外层循环中的变量。外层循环每循环一次,内层循环都会完整的执行完内层循环的所有次数。break/continue只会控制当前的循环,当多层循环嵌套时,为了便于控制,我们可以通过给循环设定标签的形式来进行控制。

4.1 语法

多层循环嵌套时,带有标签的语法结构如下:

label1: { ……
    label2: { ……
        label3: { ……
            break label2;
        } 
    } 
}

当有多层循环嵌套,我们可以给每一次循环起个标签名称,名称随意,只要符合java里的标识符命名规则即可。然后结合break或者continue就可以结束当前或本次循环。

4.2 案例

这里是多层循环嵌套时带有标签的案例,供大家参考如下:

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
public class Demo07 {
	public static void main(String[] args) {
		//多层循环嵌套
		//打印5行5列的矩形,用 * 表示
		label01:for(int i = 1 ; i <= 5 ;i++){ //控制行

		    label02:for(int j = 1 ; j <= 5 ; j++){//控制列
		        System.out.print(" * ");
		        //当执行到第3列时,提前跳出循环
		        if(j==3) {
		        	break label02;
		        	//continue label02;
		        }
		    }
		    
		    //进行换行
		    System.out.println();
		}
	}   
}

三. return

关于return关键字,今天壹哥先简单介绍以后,后面我们在学习Java的”方法“时会详细讲解!

1. 作用

return并不是专门用来结束循环的关键字,它可以用来结束一个方法或循环。当一个方法执行到return语句时,该方法就会被结束。与break和continue不同的是,return是直接结束整个方法,不管这个return处在多少层的循环之内。

2. 语法

return关键字的基本语法如下:

访问修饰符 返回值类型 方法名(参数...){
	//方法体
    //注意:这里返回值的类型必须与方法上声明的返回值类型一致!
    return 返回值;
}

3. 案例

因为return的用法,主要是和java里的”方法“有关系,所以壹哥在这里先简单给大家展示两个基本的案例,以后我们再详细学习方法和return的内容。

3.1 案例一

在方法中返回值指定类型的结果。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
public class Demo05 {
	public static void main(String[] args) {
		// return关键字
		//调用定义的方法,并获取返回结果
		String result = sayHello();
		System.out.println("result="+result);
	}
	
	//定义一个带有String类型返回值的方法
	//访问修饰符 返回值类型 
	public static String sayHello() {
		//本方法中只能返回String类型
		return "Hello,壹壹哥!";
	}
}

3.2 案例二

return也可以在循环中使用,用于结束整个循环。

/**
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 * 千锋教育
 */
public class Demo06 {
	public static void main(String[] args) {
		// return关键字
		for (int i = 1; i <= 10; i++) {
			for (int j = 1; j <= 10; j++) {
				if (i + j == 10) {
					//结束整个循环的执行,无论循环的层次
					return;
				}
				
				System.out.println("i = " + i + ",j = " + j + ",i + j = " + (i + j));
			}
		}

		//这里执行不到
		System.out.println("循环之后的语句");
	}
}

------------------------------------------------​​​​​​​正片已结束,来根事后烟----------------------------------------------

四. 结语

至此,壹哥就把return、break、continue这三个关键字给大家讲解完毕了,现在你知道它们三者的用法及其区别了吗?接下来壹哥就给大家对这几个关键字进行一下总结。

1. break与continue的对比

1.1 特点不同

  • break语句可以跳出当前循环;
  • break语句通常配合if来使用,在满足条件时可以提前结束整个循环;
  • break语句总是跳出最近的一层循环;
  • continue语句可以提前结束本次循环;
  • continue语句也可以配合if语句,在满足条件时提前结束本次循环。

1.2 使用场合不同

  • break可用于switch结构和循环结构中;
  • continue只能用于循环结构中。

1.3 作用不同

  • break语句用于终止某个循环,程序跳转到循环块外的下一条语句中;
  • continue语句用于跳出本次循环,进入到下一次循环。

2. continue、break、return三者的对比

  • break:结束所在的循环;
  • continue:跳过本次循环,继续下一次循环;
  • return:结束整个方法。

以上就是壹哥个大家总结的今天的重点内容,希望你要熟练记忆这些特性哦。如果你独自学习觉得有很多困难,可以加入壹哥的学习互助群,大家一起交流学习。

五. 配套视频

如果你不习惯阅读技术文章,或是对文中的技术概念不能很好地理解,可以来看看壹哥帮你筛选出的视频教程。与本文配套的Java学习视频,链接如下:

bilibili html5 player

六. 今日作业

1. 第一题

使用while循环,打印输出10~100之间所有能同时被5和9整除的整数。

 

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

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

相关文章

KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.03.31-2023.…

测试工具之JMH详解

文章目录 1 JMH1.1 引言1.2 简介1.3 DEMO演示1.3.1 测试项目构建1.3.2 编写性能测试1.3.3 执行测试1.3.4 报告结果 1.4 注解介绍1.4.1 BenchmarkMode1.4.2 Warmup1.4.3 Measurement1.4.4 Threads1.4.5 Fork1.4.6 OutputTimeUnit1.4.7 Benchmark1.4.8 Param1.4.9 Setup1.4.10 Te…

大数据实战 --- 美团外卖平台

目录 开发环境 数据描述 功能需求 数据准备 数据分析 RDD操作 Spark SQL操作 创建Hbase数据表 创建外部表 统计查询 开发环境 HadoopHiveSparkHBase 启动Hadoop&#xff1a;start-all.sh 启动zookeeper&#xff1a;zkServer.sh start 启动Hive&#xff1a; nohup …

Netty中的HttpServerCodec和HttpObjectAggregator

首先使用Netty搭建一个HttpServer&#xff0c;代码如下&#xff1a; public class App {public static boolean useEpoll false;static {String os System.getProperty("os.name");if (Objects.nonNull(os) && os.equalsIgnoreCase("linux") &a…

Git分支篇git branch和git checkout

分支作用 在开发过程中&#xff0c;项目往往由多人协同开发&#xff0c;那么将多人编写的代码汇总到一起就成了一个困难且复杂的工作&#xff0c;另外项目也需要备份和版本迭代&#xff0c;因此不能只有一个版本。因此分支就成为了优秀的解决方案。 分支相互独立&#xff0c;…

C++STL详解(九)--使用红黑树封装实现set和map

文章目录 控制底层红黑树模板参数模板参数中的仿函数map,set中的正向迭代器map,set中的反向迭代器[]下标访问运算符重载map的模拟实现代码map的模拟实现适用map,set容器的底层红黑树代码(修改版本) 控制底层红黑树模板参数 如果我们用一棵KV模型的红黑树同时实现map和set,我们…

【数据结构】八大排序算法(梭哈)

目录 1.直接插入排序2. * 希尔排序关于希尔排序的时间复杂度 3.选择排序4. * 堆排序5.冒泡排序6. * 快速排序6.1递归快排6.1.1 hoare版6.1.2 挖坑法6.1.3 前后指针法6.1.4 关于每个区间操作的结束位置总是小于key6.1.5 关于有序原数据的效率优化 6.2 非递归快排 7. * 归并排序7…

计算机网络考试复习——第五章

本章考察范围为5.1 5.3 5.4这三部分。 该层传输的单位是报文段 5.1 运输层协议概述&#xff1a; 5.1.1 进程之间的通信&#xff1a; 运输层是向它上面的应用层提供通信服务。它属于面向通信部分的最高层&#xff0c;同时也是用户功能的最低层。 屏蔽作用&#xff1a;运输层…

flutter系列之:如何自定义动画路由

文章目录 简介自定义跳转使用flutter动画基础实现一个自定义的route总结 简介 flutter中有默认的Route组件&#xff0c;叫做MaterialPageRoute&#xff0c;一般情况下我们在flutter中进行跳转的话&#xff0c;只需要向Navigator中传入一个MaterialPageRoute就可以了。 但是Ma…

让你的three.js动起来

让你的three.js动起来 简介 本节主要是给实例添加动画效果&#xff0c;以及加了一些小插件用以实现帧率检测、gui可视化配置、动态监听屏幕大小变化刷新和鼠标操控功能。 引入的插件js&#xff1a; three.jsdat.gui.jsStats.jsTrackballControls.js 实际效果&#xff1a; …

Java 线程状态有哪些?

文章目录 Java 线程状态有哪些&#xff1f;初始状态&#xff08;NEW&#xff09;可运行状态&#xff08;RUNNABLE&#xff09;就绪状态运行状态 阻塞状态&#xff08;BLOCKED&#xff09;等待状态&#xff08;WAITING&#xff09;超时等待&#xff08;TIMED_WAITING&#xff09…

一次打靶场记录

题目提示 1、目录爆破 在对靶场进行信息收集、目录扫描之后发现结果存在www.zip,data.zp 两个备份文件 下载回来解压之后发现www.zip是网站备份文件&#xff0c;data.zip是数据库文件&#xff0c;存在一个maccms的数据库 苹果cms的数据库&#xff0c;导入本地数据库。 admin…

【并发编程Python】为什么Python这么慢

Python速度慢的所有原因 Python作为一门非常优秀的计算机语言&#xff0c;其速度慢给Python减了很多分&#xff0c;也是其一直被诟病的主要原因之一&#xff0c;通常情况下&#xff0c;Python比Java/C慢约5-10倍&#xff0c;在一些特殊的情况下Python甚至比C慢100~200倍&#x…

数据结构——B树和B+树

数据结构——B树和B树 一、B树1.B树的特征2.B树的插入操作3.B树的删除操作4.B树的缺点 二、B树B树的特征 平衡二叉树或红黑树的查找效率最高&#xff0c;时间复杂度是O(nlogn)。但不适合用来做数据库的索引树。 因为磁盘和内存读写速度有明显的差距&#xff0c;磁盘中存储的数…

玩转肺癌目标检测数据集Lung-PET-CT-Dx ——③整理、验证数据,建立Dataset对象

文章目录 数据整理整理出所有的dcm文件整理出所有的xml标注文件整理数据①——舍弃错误的标注文件整理数据②——两个标注文件指向同一个目标图片的情况封装函数&#xff0c;传入xml文件&#xff0c;显示标注效果 整理数据③——将PETCT的三通道图像转成平扫CT的单通道图像格式…

企业费控,驶向「一体化」

在数字化于企业内部各个环节实现平权、成为标配的当下&#xff0c;财务&#xff0c;这个被称为“控制企业生命力”的核心环节&#xff0c;是否应该拥有新的价值&#xff1f; 作者| 皮爷 出品|产业家 2022年年中&#xff0c;施伟和分贝通的团队接到一项“特殊需求”。 这个…

在职读研专业——劳动经济学

研究方向&#xff1a;劳动经济学主要研究劳动力市场现象及其所引起的劳动力资源配置等相关问题&#xff0c;包括劳动力供给、劳动力需求、就业、工资、人力资本投资、收入分配等。例如&#xff1a;劳动力市场失衡背后各种因素的变化&#xff0c;如何通过资源的配置使劳动资源配…

MySQL innobackupex 备份工具使用总结

前言 在MySQL备份以及搭建从库的过程中&#xff0c;我们针对比较小的库大多采用的是mysqldump&#xff0c;简单&#xff0c;方便。但是在大库进行搭建从库的时候&#xff0c;且数据库主机没有一个很好的存储来满足备份&#xff0c;这个时候就需要使用innobackupex来协助你来做一…

Pocsuite3框架POC/EXP编写练习:Flask(Jinja2) 服务端模板注入漏洞

Pocsuite3 是由知道创宇 404 实验室打造的一款基于 GPLv2 许可证开源的远程漏洞测试框架。可以用来编写POC/EXP&#xff0c;今天借助Flask框架下的SSTI漏洞练习记录一下Pocsuite3框架的配置和编写过程。 官方文档&#xff1a;Pocsuite3 是什么&#xff1f; | Pocsuite3 安装 …

小黑继续跟着沛奇老师学携程:携程基础3

3.异步编程 3.1事件循环 理解成一个死循环&#xff0c;去检测并执行某些代码 # 伪代码任务列表 [任务1&#xff0c;任务2&#xff0c;任务3&#xff0c;...] while True:可执行的任务列表&#xff0c;已完成的任务列表 去任务列表中检查所有任务&#xff0c;将可执行和已完…