2023-05-11 04:50:13 来源:博客园
【资料图】
大家是否见过这种for循环,在for循环前加了个标记的:
outerLoop:for (; ; ) { for (; ; ) { break outerLoop; }}
我之前有一次在公司业务代码中见过有这种写法的,没在意,今天在看JDK线程池的代码时,又看到ThreadPoolExecutor
的addWorker
方法中有这种写法。于是就查了相关资料,也比较简单。
总结下它的用法吧:
outerLoop
是一个标记外层for
循环的标签,它可以随便命名。break
和continue
跳转到外层for循环;我们知道,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的时候都没学这个东西,实际写业务代码的时候能避免就避免,内层循环能抽就抽个方法。如果业务太复杂抽不了,这种写法也不失为一种策略。
标签:
大家是否见过这种for循环,在for循环前加了个标记的:outerLoop:for(;;){for(;;){breakouterLoop;}}我之前
2023年5月10日周三黄金原油策略回顾:黄金今天下午12点15分提供的现价2031和2029和2027分批多单最低到2025
大家是否见过这种for循环,在for循环前加了个标记的:outerLoop:for(;;){for(;;){breakouterLoop;}}我之前
2023年5月10日周三黄金原油策略回顾:黄金今天下午12点15分提供的现价2031和2029和2027分批多单最低到2025
旗袍,中国和世界华人女性的传统服装,被誉为中国国粹和女性国服。虽然其定义和产生的时间至今还存有诸多争议,但它仍然是中国悠久服饰文化
7月21日,北京市政府发布《北京市电影局关于在疫情防控常态化条件下有序推进电影院恢复开放的通知》,宣布全市低风险地区影院,可于7月24日
武汉7·16渡江节组委会14日发布公告,由于长江武汉关水位超警戒水位,按照规定取消2020年第46届武汉7·16渡江节。受近期持续强降雨影响,
过去一段时间,国家级非遗项目灰塑传承人邵成村,多次在陈家祠等工作现场,向身边那些带着好奇目光的人们讲解灰塑的种种技术细节:草根灰、
7月13日,位于璧山区南门唐城夜市街区的璧山冷酒夜市开街。这是璧山区打造夜间经济消费载体、培育夜间经济活动品牌的举措之一。璧山市民一