JAVA基础-跳出循环的4种方式
摘要:介绍4种跳出循环的方式,尤其是其中的break 标签,有时候真的会成为工作中的秘密武器。
在实际编程中,有时需要在条件语句匹配的时候跳出循环。在 Java 语言里,由关键词 break 和 continue 控制。Java跳出for或者while循环的四种方式:
continue:跳出当前层循环的当前语句,执行当前层循环的下一条语句。
break:跳出当前层循环。
break+标签:多层循环时,跳到具体某层循环。
return:结束所有循环,方法内直接返回。
break和continue是老生常谈的东西,break是终止当前层循环,包括之后的本层循环,continue是终止本次循环的语句,继续之后的本层循环。
break 语句
在存在内循环的情况下,Java break 语句用来结束内循环,即不再执行当前内循环后边的所有循环,但外循环仍然继续执行。
【示例】打印当前循环坐标。
private static void breakDemo() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i == 2 && j == 1) {
break;
}
System.out.println(i + ", " + j);
}
}
}
由输出结果可知没有打印i=2时的内循环数据:
1, 1
1, 2
1, 3
3, 1
3, 2
3, 3
分析:循环中跳过了i=2时,对内循环的遍历。
continue 语句
Java continue 语句用来终止当前操作,并继续内循环,即仅仅是这一次循环结束了,而非所有循环结束了,后边的循环依旧进行。
private static void continueDemo() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i == 2 && j == 2) {
continue;
}
System.out.println(i + ", " + j);
}
}
}
在如下输出结果中,没有打印2, 2
:
1, 1
1, 2
1, 3
2, 1
2, 3
3, 1
3, 2
3, 3
带标签的break
使用break语句只能跳出一层循环,但是在实际开发中,有时会碰到跳出到某层循环的情况,这时使用break语句就不能达到预期效果,需要搬出break 标签了。
java的标签只能定义在语句块的上方,例如while和for循环,用于跳出多重嵌套的循环语句块,如下面loop
的形式定义。可以直接在内层使用break lable
跳出指定的代码块。
private static void labelDemo() {
for (int i = 1; i <= 3; i++) {
loop:
for (int j = 1; j <= 3; j++) {
for (int k = 1; k <= 3; k++) {
if (j == 2) {
break loop;
}
System.out.println(i + ", " + j + ", " + k);
}
}
}
}
分析:遇到j==2的时候,就跳出循环到loop:
1, 1, 1
1, 1, 2
1, 1, 3
2, 1, 1
2, 1, 2
2, 1, 3
3, 1, 1
3, 1, 2
3, 1, 3
一言以蔽之,带标签的break的影响范围是指定标签后定义的循环语句块。
return 结束所有循环,方法内直接返回。这个容易理解,就不介绍了。
结束语
对于Wiener以上的话题,大家又有什么自己的独特见解呢?欢迎在下方评论区留言!
Reference
JAVA基础-跳出循环的4种方式的更多相关文章
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- Java中创建对象的几种方式
Java中创建对象的五种方式: 作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字.使用Cl ...
- java产生随机数的几种方式
java产生随机数的几种方式 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他 ...
- Java添加事件的四种方式
Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动) /** * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器 * * @author ...
- java解析xml的几种方式
java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...
- 对Java代码加密的两种方式,防止反编译
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...
- Java中创建对象的五种方式
我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里变成了根深蒂固的new方式创建,但是其实创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone ...
- java 实现websocket的三种方式
Java中实现websocket常见有以下三种方式: 使用tomcat的websocket实现,需要tomcat 7.x,JEE7的支持. 使用spring的websocket,spring与webs ...
- java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1 ...
随机推荐
- [第一章]ABAQUS CM插件中文手册
ABAQUS Composite Modeler User Manual(zh-CN) Dassault Systèmes, 2018 注: 源文档的交叉引用链接,本文无效 有些语句英文表达更易理解, ...
- pytest 框架使用规则
使用pytest 注意 有时候常常会调用时文件未执行,就是没注意命名规范 如何调用-命令行调用 pytest 批量运行测试用例 单个用例调试成功后,接下来我们要进行所有脚本统一执行 我要执行testc ...
- 用状态模式开发一个基于WPF的截图功能
状态模式 状态模式是设计模式中的一种行为设计模式,对很多人来说,这个模式平时可能用不到.但是如果你做游戏开发的话,我相信你应该对这个模式有一个很深刻的理解.状态模式在游戏中开发中还是比较常见的.状态模 ...
- centos操作collection
Centos修改IP地址 https://blog.csdn.net/weixin_45193791/article/details/124646170 Centos打开.修改.保存文件 https: ...
- IDEA激活后提示We could not validate your license xxxx解决办法
示例报错样式:每次激活单开都会不断弹出--很烦 解决思路是拦截jetbrains校验license的请求, 也就是找到校验license的接口屏蔽掉就行; > 别信网上的配置代理拦截 这样做 ...
- MySQL-对Change Buffer的理解
Change Buffer的处理过程 对非唯一的普通索引的新增或更新操作,如果索引B+树的需要新增或更新的数据页不在内存中,则直接更新change buffer,等到后面需要使用这个数据页(真正读到内 ...
- Debian 9 更换源
Debian 全球镜像站 # 先备份源列表文件 mv /etc/apt/sources.list /etc/apt/sources.list.bak # 生成新的源列表文件(用的国内源镜像) echo ...
- 移除任务栏右端"显示桌面"按钮-AutoIt
核心代码 $hwnd = WinGetHandle("[CLASS:Shell_TrayWnd]", "") ControlHide($hwnd, " ...
- 基于大模型的 RAG 核心开发——详细介绍 DeepSeek R1 本地化部署流程
前言 自从 DeepSeek 发布后,对 AI 行业产生了巨大的影响,以 OpenAI.Google 为首的国际科技集团为之震惊,它的出现标志着全球AI竞争进入新阶段.从以往单纯的技术比拼转向效率.生 ...
- Model接口
/** * Model接口 * 作用:将值存放到request对象 * * * @return */ @RequestMapping(value = "/testModle") p ...