博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中 label 配合 break continue 使用方法
阅读量:5299 次
发布时间:2019-06-14

本文共 3256 字,大约阅读时间需要 10 分钟。

转 https://www.jianshu.com/p/7954b61bc6ee

java中 label 配合 break continue 使用的其实是比较少的.

这种做法在业务代码中比较少见.
在读其他库的代码时可能会遇到该语法的使用.
下面对该语法做简短解释.

break label

用来终止循环体的循环,使用break 可以终止的循环体包括三种, for,while,do-while

不带 label使用 break 时

执行 break ,会终止离 break 关键字最近的循环体的循环.

示例如下

for (int i = 0; i < 3; i++) {    System.out.println(String.format("start outer for loop index %d", i)); int j = 0; while (true) { System.out.println(String.format("inner loop with while index %d", j)); if (j == 2) { //终止最近的for,while,do-while循环 break; } else { j++; } } System.out.println(String.format("end outer for loop index %d", i)); }

结果为

start outer for loop index 0

inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 0
start outer for loop index 1
inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 1
start outer for loop index 2
inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 2

通过打印可以看出,内部循环每次执行到2时就将当前 while 死循环停止.

而外部循环则会从0遍历到2,正常循环遍历.不受 break 的影响.

带 label 的break

会终止指定 label 所对应的循环体.

示例为从二维的student age 数组中,找第一个年纪为9岁的学生.

int students[][] = {
{
10, 12, 11}, { 8, 9, 1}, { 9, 15, 7}}; jumpOutHere: for (int i = 0; i < 3; i++) { System.out.println(String.format("start outer for loop index %d", i)); int j = 0; while (j < 3) { System.out.println(String.format("current retrieve value %d", students[i][j])); if (students[i][j] == 9) { break jumpOutHere; } else { j++; } } System.out.println(String.format("end outer for loop index %d", i)); }

结果为

start outer for loop index 0

current retrieve value 10
current retrieve value 12
current retrieve value 11
end outer for loop index 0
start outer for loop index 1
current retrieve value 8
current retrieve value 9

当遍历到二维数组中第一个年纪为9的学生时,直接终止 label 对应的循环.此处为外层循环.

continue label

用来跳过循环体中本次执行的循环,使用continue 可以跳过的循环体包括三种, for,while,do-while

不带 label 的 continue

会跳过距离continue最近的循环体的本次执行,执行下一次循环

for (int i = 0; i < 3; i++) {    System.out.println(String.format("start outer for loop index %d", i)); for(int k = 0;k<3;k++){ if(k==1) continue; System.out.println(String.format("inner loop index %d",k)); } System.out.println(String.format("end outer for loop index %d", i)); }

start outer for loop index 0

inner loop index 0
inner loop index 2
end outer for loop index 0
start outer for loop index 1
inner loop index 0
inner loop index 2
end outer for loop index 1
start outer for loop index 2
inner loop index 0
inner loop index 2
end outer for loop index 2

通过示例可以看出当 k=1时会跳过本次内部循环(也是离 continue 最近的循环),直接执行下一次内部循环.

带 label 的 continue

会跳过标记为 label 的循环体中的本次循环的执行,并执行, label 标记位置的下一个循环.

CONTINU_LABLE:for (int i = 0; i < 3; i++) {    System.out.println(String.format("start outer for loop index %d", i)); for (int k = 0; k < 3; k++) { if (k == 1) continue CONTINU_LABLE; System.out.println(String.format("inner loop index %d", k)); } System.out.println(String.format("end outer for loop index %d", i)); }

start outer for loop index 0

inner loop index 0
start outer for loop index 1
inner loop index 0
start outer for loop index 2
inner loop index 0

通过结果可以看出,当 k=1时,直接就跳到CONTINU_LABLE标记的循环体的下一次循环了.

转载于:https://www.cnblogs.com/it-tsz/p/11312848.html

你可能感兴趣的文章
git 基本使用方法
查看>>
Linux常用命令大全2
查看>>
【三石jQuery视频教程】03.创建垂直时间表(Timeline)
查看>>
如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
查看>>
汇编3栈帧,参数传递,串操作,混合汇编,x64,asm文件
查看>>
构建之法阅读笔记06
查看>>
mysql 事务,锁,与四大隔离级别
查看>>
输入输出
查看>>
FastCGI学习总结
查看>>
UVA - 699 The Falling Leaves
查看>>
关于博客园开放API的授权问题解决
查看>>
hashlib模块
查看>>
Linux 创建Bridge
查看>>
Hdu3079Balanced Number数位dp
查看>>
scrolledtext插入和删除数据
查看>>
[洛谷P4001][BJOI2006]狼抓兔子
查看>>
一切的开始
查看>>
HTML解析原理概括(转载)
查看>>
Json,String,Map之间的转换
查看>>
could not get next sequence value
查看>>