Java标签Label,如何不使用continue和break跳出循环
文章目录
- 前言
- 单层循环
- 双层循环
- 多层循环
- 总结
前言
今天看同事代码的时候看到使用label
跳出循环的方式甚感惊讶,java真的是博大精深,赶紧总结一下用法。
单层循环
使用单层循环进行测试,测试代码如下:
/*** 使用单层for循环测试*/public static void labelTest01() {System.out.println("---------使用单层for循环结合break跳出循环---------");for (int i = 0; i < 5; i++) {System.out.println("i == " + i);if (i == 2) {System.out.println("[i==" + i + "] 跳出循环");break;}}System.out.println("---------使用单层for循环结合label跳出循环---------");label:for (int i = 0; i < 5; i++) {System.out.println("i == " + i);if (i == 2) {System.out.println("[i==" + i + "] 跳出循环");break label;}}}
测试结果
---------使用单层for循环结合break跳出循环---------
i == 0
i == 1
i == 2
[i==2] 跳出循环
---------使用单层for循环结合label跳出循环---------
i == 0
i == 1
i == 2
[i==2] 跳出循环
我们发现如果是这种单层的循环的话,使用label方式和break效果是一样的
。
双层循环
使用两层循环再次进行测试,测试代码如下:
public static void labelTest02() {System.out.println("---------使用双层for循环结合break跳出循环---------");for (int i = 0; i < 5; i++) {System.out.println("i == " + i);for (int j = 0; j < 5; j++) {System.out.println("i == " + i + ", j == " + j);if (i == 2 && j == 1) {System.out.println("[i == " + i + "], [j == " + j + "]跳出循环");break;}}}System.out.println("---------使用双层for循环结合label跳出循环---------");label:for (int i = 0; i < 5; i++) {System.out.println("i == " + i);for (int j = 0; j < 5; j++) {System.out.println("i == " + i + ", j == " + j);if (i == 2 && j == 1) {System.out.println("[i == " + i + "], [j == " + j + "]跳出循环");break label;}}}}
测试结果:
---------使用双层for循环结合break跳出循环---------
i == 0
i == 0, j == 0
i == 0, j == 1
i == 0, j == 2
i == 0, j == 3
i == 0, j == 4
i == 1
i == 1, j == 0
i == 1, j == 1
i == 1, j == 2
i == 1, j == 3
i == 1, j == 4
i == 2
i == 2, j == 0
i == 2, j == 1
[i == 2], [j == 1]跳出循环
i == 3
i == 3, j == 0
i == 3, j == 1
i == 3, j == 2
i == 3, j == 3
i == 3, j == 4
i == 4
i == 4, j == 0
i == 4, j == 1
i == 4, j == 2
i == 4, j == 3
i == 4, j == 4
---------使用双层for循环结合label跳出循环---------
i == 0
i == 0, j == 0
i == 0, j == 1
i == 0, j == 2
i == 0, j == 3
i == 0, j == 4
i == 1
i == 1, j == 0
i == 1, j == 1
i == 1, j == 2
i == 1, j == 3
i == 1, j == 4
i == 2
i == 2, j == 0
i == 2, j == 1
[i == 2], [j == 1]跳出循环
根据测试结果我们发现,普通的break只跳出了当前循环,但是使用label可以跳出双层循环。
多层循环
使用lable做多层循环的测试,测试代码如下:
public static void labelTest03() {System.out.println("---------使用多层循环结合label跳出循环---------");ThreadLocalRandom threadLocalRandom = ThreadLocalRandom.current();label_01:for (; ; ) {int i = threadLocalRandom.nextInt(1, 10);label_02:for (; ; ) {int j = threadLocalRandom.nextInt(1, 10);for (; ; ) {if (i != j) {System.out.println("i=" + i + " 不等于 " + "j=" + j + ",跳转到label_02重新生成j");break label_02;} else {System.out.println("i=" + i + " 等于 " + "j=" + j + ",跳转到label_01跳出循环");break label_01;}}}}}
测试结果:
---------使用多层循环结合label跳出循环---------
i=5 不等于 j=7,跳转到label_02重新生成j
i=1 不等于 j=9,跳转到label_02重新生成j
i=4 不等于 j=1,跳转到label_02重新生成j
i=2 不等于 j=7,跳转到label_02重新生成j
i=5 等于 j=5,跳转到label_01跳出循环
我们这是使用了三个for循环,然后使用了两个label标签,说明一下,这个lable标签名称不限可以自己定义
,这个lable标签有点儿类似goto但是用法不一样。
总结
java这种跳出循环的方式:
- break:跳出本层for或者while循环继续执行以后代码
- continue:提前结束本次循环,然后执行下一次循环,并未跳出本层循环
- return:结束本次方法执行,如果有返回值则返回结果
- lable:跳出所有循环到定义lable标签的位置
Java标签Label,如何不使用continue和break跳出循环相关推荐
- Java - 标签(label)
标签(label) 在Java中, 标签必须在循环之前使用, 一个循环之中嵌套另一个循环的开关, 从多重嵌套中continue或break. 语法 label: @Testpublic void te ...
- java基础学习(5)-continue与break
continue: 1.在循环结构中使用, 2.默认结束最近的当前循环, 3.如果指定标识符就跳出标识符的那层循环结构, 4.关键字后面不能声明语句 break: 1.在循环结构中使用, 2.默认结束 ...
- java label 标签_Java标签(Label)
本篇文章帮大家学习java标签(Label),包含了Java标签(Label)使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. Java 中的标签是为循环设计的,是为了在多 ...
- java中label是什么_Java中的标签(Label)是什么?
基本介绍: Java中的标签(Label)是为循环设计的,是为了在多重循环中方便的使用break和continue. 使用介绍: 基本的使用方法是 1.定义标签的名称,如test1 2.找到需要用到标 ...
- 小tips:JS之按位取反,语法标签label,正则表达式中replace的0,1是什么?
JS按位取反 Javascript 按位取反运算符 (~) ,对一个表达式执行位非(求非)运算.如 ~1 = -2; ~2 = -3; 来看看~1的计算步骤: 将1(这里叫:原码)转二进制 = 000 ...
- java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序
在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...
- java标签用法详解_介绍一个javaWeb自定义标签的用法详解
这篇文章主要介绍了javaWeb自定义标签用法,结合实例形式分析了javaweb自定义标签的功能.定义方法及执行原理,需要的朋友可以参考下 本文实例讲述了javaWeb自定义标签用法.分享给大家供大家 ...
- java控制关键字continue,break,return
java控制关键字continue,break,return /*** break 可以停止循环继续执行 只能停止最内层的循环* 如果想停止外层for循环 需要给外层循环做标记* continue 停 ...
- k8s标签(label)的使用
1.在yaml文件里添加标签 apiVersion: v1 kind: Pod metadata:labels:app: test02run: kubia ...... ...... 2.查看列表时显 ...
最新文章
- Linux0.11内核引导启动过程概述
- [原]IE9 DOM的自定义属性问题
- linux sh脚本 递增,Linux shell 脚本实现进度框
- 关于GeneXus封装方法Model的方法
- RxJava + Java8 + Java EE 7 + Arquillian =幸福
- 3.3 1!到n!的和
- node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
- 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候
- Python 3.8与普通程序员有关的几个新特性
- MySql中左连接查询突然变得很慢
- [目标检测]YOLO原理
- 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap MD
- gmail如何设置邮箱别名
- Gary Marcus再发万字长文,列14个QA回应机器学习批判言论
- vue 修改标题栏_在Vue中如何实现动态修改页面title
- HBase集群出现NotServingRegionException问题的排查及解决方法
- 期货数据保存到excel里面
- mysql capi函数详解_CAPI函数描述(A-F)
- 两分钟研究透idea中Git文件的颜色,绿红蓝白灰
- 字符编码之间的相互转换 UTF8与GBK
热门文章
- SAP常用的科目字段状态组设置
- 以人致胜 SAP开启HR云端变革之旅
- excel数据透视表列名更改
- 拼多多“京东化”:自建物流重农卖菜是赚谁的钱?
- “天猫化”的考拉,还是考拉吗?
- linux线程调度函数,Linux调度策略及线程优先级设置
- 徐艳 中国科学院成都计算机,互动、碰撞!精彩纷呈!成都市中职计算机专业菜单培训在双流建校举行!...
- Python中由生成杨辉三角代码所思考的一些问题
- Python规范:提高可读性
- Python内置函数查询表——总结篇