Java循环标签
大家是否见过这种for循环,在for循环前加了个标记的:
outerLoop:
for (; ; ) {
for (; ; ) {
break outerLoop;
}
}
我之前有一次在公司业务代码中见过有这种写法的,没在意,今天在看JDK线程池的代码时,又看到ThreadPoolExecutor的addWorker方法中有这种写法。于是就查了相关资料,也比较简单。
总结下它的用法吧:
- 上面代码中的
outerLoop是一个标记外层for循环的标签,它可以随便命名。 - 该标签主要用于循环嵌套的情况,使得
break和continue可直接跳转到标签标记的位置;
我们知道,break的作用是跳出当前循环,continue的作用是结束本次循环,继续下次循环。如果有双层for循环,在内层的for循环中,想直接跳出所有循环,使用break outerLoop就可以实现;而continue outerLoop的作用是结束外层的本次循环,继续外层的下一次循环。
举个例子:
public static void main(String[] args) {
String[] strings = {"1", "2", "3"};
outerLoop:
for (String str : strings) {
for (; ; ) {
if (str.equals("1")) {
break;
}
if (str.equals("2")) {
continue outerLoop;
}
if (str.equals("3")) {
break outerLoop;
}
}
System.out.println("str.equals(1)");
}
System.out.println("str.equals(3)");
}
上面代码中双重for循环,执行逻辑为:
- 第一个
if跳出当前内层循环,会打印str.equals(1); - 第二个
if执行外层for循环的下一次循环; - 最后一次循环,
str的值为3,跳出外层循环,结束整个循环,然后打印str.equals(3)。
这种for加标签的写法确实很少见,学Java的时候都没学这个东西,实际写业务代码的时候能避免就避免,内层循环能抽就抽个方法。如果业务太复杂抽不了,这种写法也不失为一种策略。
这种写法同样适用于while和do while循环。
Java循环标签的更多相关文章
- java基础-循环标签
outer: for innter: for break outer//跳出整个循环: continue outer//结束本次外循环的循环 break inner; continute inner; ...
- Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库
前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...
- Java ---自定义标签
本篇文章介绍自定义标签,可能在工作中很少涉及到自己来定义一个标签库,因为我们基本上都是使用的大神写的标签库,基本上直接使用即可,但是从自身的发展来看,通往高级程序员的道路上,开发框架就需要大 ...
- Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label)
ylbtech-Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label) 1.返回顶部 1. Java 实例 - 标签(Label) Java 实例 Java 中 ...
- struts2 循环标签使用
struts2 counter循环标签的使用: struts2随提供了循环控制标签<s:iterator/>,,使用起来也比较方便,但在具体的应用中,也有不方便之处,他没有像struts1 ...
- Jsp2.0自定义标签(第二天)——自定义循环标签
今天是学习自定义标签的第二天,主要是写一个自定义的循环标签. 先看效果图: 前台页面Jsp代码 <%@ page language="java" contentType=&q ...
- java jstl标签
转自:http://blog.csdn.net/liushuijinger/article/details/9143793 JSTL(JSP Standard Tag Library ,JSP标准标签 ...
- 杂项-Java:标签库
ylbtech-杂项-Java:标签库 1.返回顶部 1. JSP标签库,也称自定义标签库,可看成是一种通过JavaBean生成基于XML的脚本的方法.从概念上讲,标签就是很简单而且可重用的代码结构. ...
- 失去循环标签的Python,我这样实现跳出外层循环
不完美的Python 自从各类Python大火,感觉天上地下哪儿都有Python的一席之地,Python功夫好啊-但python有些细节上缺少其他语言的便利.今天我们就来举几个例子. 跳出外层循环 大 ...
- Java循环和条件
下列程序的输出结果是什么? 1.Java循环和条件 /** * @Title:IuputData.java * @Package:com.you.data * @Description:TODO * ...
随机推荐
- DRF过滤器
https://www.django-rest-framework.org/api-guide/filtering 一般情况下,我们可以重写DRF视图类的get_queryset()方法来实现查询结果 ...
- MinIO客户端之stat
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc stat 获取指定桶或者对象的信息,包含对象的元数据. 指定桶bkt1,查看信息,命令如下: ./mc st ...
- HTTP安全头部对jsp页面不生效
本文于2016年4月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 诡异的问题 AppScan扫描报告中提示,Web服务器返回js.cs ...
- .NET Conf China 2023分享-.NET应用国际化-AIGC智能翻译+代码生成
今年.NET Conf China 2023技术大会,我给大家分享了 .NET应用国际化-AIGC智能翻译+代码生成的议题,今天整理成博客,分享给所有人. 随着疫情的消退,越来越多的企业开始向海外拓展 ...
- 云小课|云数据库RDS实例连接失败了?送你7大妙招轻松应对
摘要:自从购买了RDS实例,连接失败的问题就伴随着我,真是太难了.不要害怕,不要着急,跟着小云妹,读了本篇云小课,让你风里雨里,实例连接自此畅通无阻! 顺着以下几个方面进行排查,问题就可以迎刃而解~ ...
- 7000+字图文并茂解带你深入理解java锁升级的每个细节
摘要:对于java锁升级,很多人都停留在比较浅层的表面理解,这篇7000+字和图解带你深入理解锁升级的每个细节. 本文分享自华为云社区<对java锁升级,你是否还停留在表面的理解?7000+字和 ...
- 盘点华为云GaussDB(for Redis)六大秒级能力
摘要:盘点高斯Redis的秒级能力,包括扩容.备份.删除.启动等. 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第20期:六大秒级能力盘点>,作者: 高斯Redis ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第13期:如何搞定推荐系统存储难题
摘要:GaussDB(for Redis)轻松搞定推荐系统核心存储,为企业级应用保驾护航. 本文分享自华为云社区<GaussDB(for Redis)揭秘第13期:如何搞定推荐系统存储难题?&g ...
- 带你掌握二进制SCA检测工具的短板及应对措施
摘要:本文针对二进制SCA检测技术短板所面临的一些特殊场景.检测影响及应对措施进行详细分析和说明,希望对使用二进制SCA检测工具的测试和研发人员有所帮助. 本文分享自华为云社区<二进制SCA检测 ...
- 我教你解决 Ubuntu 常见的三个问题:Window和Ubuntu无法复制,有另一个软件包管理程序正在运行、无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
第一个问题:当自己遇到这个问题的时候,查阅很多资料,发现很多需要安装一大推东西,又是安装,又是重启,最后还是没有搞定.最后还是通过这三行命令搞定了.sudo apt-get autoremove op ...