文章目录

  • 前言
  • 单层循环
  • 双层循环
  • 多层循环
  • 总结

前言

今天看同事代码的时候看到使用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这种跳出循环的方式:

  1. break:跳出本层for或者while循环继续执行以后代码
  2. continue:提前结束本次循环,然后执行下一次循环,并未跳出本层循环
  3. return:结束本次方法执行,如果有返回值则返回结果
  4. lable:跳出所有循环到定义lable标签的位置

Java标签Label,如何不使用continue和break跳出循环相关推荐

  1. Java - 标签(label)

    标签(label) 在Java中, 标签必须在循环之前使用, 一个循环之中嵌套另一个循环的开关, 从多重嵌套中continue或break. 语法 label: @Testpublic void te ...

  2. java基础学习(5)-continue与break

    continue: 1.在循环结构中使用, 2.默认结束最近的当前循环, 3.如果指定标识符就跳出标识符的那层循环结构, 4.关键字后面不能声明语句 break: 1.在循环结构中使用, 2.默认结束 ...

  3. java label 标签_Java标签(Label)

    本篇文章帮大家学习java标签(Label),包含了Java标签(Label)使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. Java 中的标签是为循环设计的,是为了在多 ...

  4. java中label是什么_Java中的标签(Label)是什么?

    基本介绍: Java中的标签(Label)是为循环设计的,是为了在多重循环中方便的使用break和continue. 使用介绍: 基本的使用方法是 1.定义标签的名称,如test1 2.找到需要用到标 ...

  5. 小tips:JS之按位取反,语法标签label,正则表达式中replace的0,1是什么?

    JS按位取反 Javascript 按位取反运算符 (~) ,对一个表达式执行位非(求非)运算.如 ~1 = -2; ~2 = -3; 来看看~1的计算步骤: 将1(这里叫:原码)转二进制 = 000 ...

  6. java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序

    在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...

  7. java标签用法详解_介绍一个javaWeb自定义标签的用法详解

    这篇文章主要介绍了javaWeb自定义标签用法,结合实例形式分析了javaweb自定义标签的功能.定义方法及执行原理,需要的朋友可以参考下 本文实例讲述了javaWeb自定义标签用法.分享给大家供大家 ...

  8. java控制关键字continue,break,return

    java控制关键字continue,break,return /*** break 可以停止循环继续执行 只能停止最内层的循环* 如果想停止外层for循环 需要给外层循环做标记* continue 停 ...

  9. k8s标签(label)的使用

    1.在yaml文件里添加标签 apiVersion: v1 kind: Pod metadata:labels:app: test02run: kubia ...... ...... 2.查看列表时显 ...

最新文章

  1. Linux0.11内核引导启动过程概述
  2. [原]IE9 DOM的自定义属性问题
  3. linux sh脚本 递增,Linux shell 脚本实现进度框
  4. 关于GeneXus封装方法Model的方法
  5. RxJava + Java8 + Java EE 7 + Arquillian =幸福
  6. 3.3 1!到n!的和
  7. node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  8. 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候
  9. Python 3.8与普通程序员有关的几个新特性
  10. MySql中左连接查询突然变得很慢
  11. [目标检测]YOLO原理
  12. 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap MD
  13. gmail如何设置邮箱别名
  14. Gary Marcus再发万字长文,列14个QA回应机器学习批判言论
  15. vue 修改标题栏_在Vue中如何实现动态修改页面title
  16. HBase集群出现NotServingRegionException问题的排查及解决方法
  17. 期货数据保存到excel里面
  18. mysql capi函数详解_CAPI函数描述(A-F)
  19. 两分钟研究透idea中Git文件的颜色,绿红蓝白灰
  20. 字符编码之间的相互转换 UTF8与GBK

热门文章

  1. SAP常用的科目字段状态组设置
  2. 以人致胜 SAP开启HR云端变革之旅
  3. excel数据透视表列名更改
  4. 拼多多“京东化”:自建物流重农卖菜是赚谁的钱?
  5. “天猫化”的考拉,还是考拉吗?
  6. linux线程调度函数,Linux调度策略及线程优先级设置
  7. 徐艳 中国科学院成都计算机,互动、碰撞!精彩纷呈!成都市中职计算机专业菜单培训在双流建校举行!...
  8. Python中由生成杨辉三角代码所思考的一些问题
  9. Python规范:提高可读性
  10. Python内置函数查询表——总结篇