您的位置:首页 > 产品设计 > UI/UE

break 和continue以及return的区别

2015-10-08 21:39 671 查看

break 和continue以及return的区别

break 作用结束当前所在层的循环

continue 结束本层的本次循环

return 结束所在多级循环,返回

以一个两层循环为例,代码如下

for (int i = 0; i < 10; i++) {
Log.d("value", "----->i=" + i);
for (int j = 0; j < 10; j++) {
Log.i("value", "j=" + j);
}
}


continue 结束本层的本次循环

for (int i = 0; i < 10; i++) {
Log.d("value", "----->i=" + i);
for (int j = 0; j < 10; j++) {
if (j == 2) {
// continue的作用跳过本层本次循环,当 j=2时被跳过
continue;
}
Log.i("value", "j=" + j+"");
}
}


加入continue代码打印结果,结束了本层本次循环,即当j=2被跳过了,开始本层下一个循环,从j=3开始打印

10-08 13:45:46.456: D/value(1197): —–>i=0

10-08 13:45:46.456: I/value(1197): j=0

10-08 13:45:46.460: I/value(1197): j=1

10-08 13:45:46.460: I/value(1197): j=3

10-08 13:45:46.460: I/value(1197): j=4

10-08 13:45:46.460: I/value(1197): j=5

10-08 13:45:46.460: I/value(1197): j=6

10-08 13:45:46.460: I/value(1197): j=7

10-08 13:45:46.460: I/value(1197): j=8

10-08 13:45:46.460: I/value(1197): j=9

10-08 13:45:46.460: D/value(1197): —–>i=1

10-08 13:45:46.460: I/value(1197): j=0

10-08 13:45:46.460: I/value(1197): j=1

10-08 13:45:46.464: I/value(1197): j=3

10-08 13:45:46.464: I/value(1197): j=4

10-08 13:45:46.464: I/value(1197): j=5

10-08 13:45:46.464: I/value(1197): j=6

10-08 13:45:46.464: I/value(1197): j=7

10-08 13:45:46.464: I/value(1197): j=8

10-08 13:45:46.464: I/value(1197): j=9

10-08 13:45:46.464: D/value(1197): —–>i=2

10-08 13:45:46.464: I/value(1197): j=0

10-08 13:45:46.464: I/value(1197): j=1

10-08 13:45:46.464: I/value(1197): j=3

10-08 13:45:46.464: I/value(1197): j=4

10-08 13:45:46.464: I/value(1197): j=5

10-08 13:45:46.464: I/value(1197): j=6

10-08 13:45:46.464: I/value(1197): j=7

10-08 13:45:46.464: I/value(1197): j=8

10-08 13:45:46.464: I/value(1197): j=9

10-08 13:45:46.464: D/value(1197): —–>i=3

10-08 13:45:46.464: I/value(1197): j=0

10-08 13:45:46.464: I/value(1197): j=1

10-08 13:45:46.464: I/value(1197): j=3

10-08 13:45:46.464: I/value(1197): j=4

10-08 13:45:46.464: I/value(1197): j=5

10-08 13:45:46.464: I/value(1197): j=6

10-08 13:45:46.464: I/value(1197): j=7

10-08 13:45:46.464: I/value(1197): j=8

………此处省略….

break 作用结束当前所在层的循环

for (int i = 0; i < 10; i++) {
Log.d("value", "----->i=" + i);
for (int j = 0; j < 10; j++) {
if (j == 2) {
// break 结束所在层循环
break;
}
Log.i("value", "j=" + j + "");
}
}


观察打印结果:当代码执行到break后,本次循环结束,直接进入开始上一层循环

10-08 13:51:36.460: D/value(1257): —–>i=0

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=1

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=2

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=3

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=4

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=5

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=6

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=7

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=8

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

10-08 13:51:36.460: D/value(1257): —–>i=9

10-08 13:51:36.460: I/value(1257): j=0

10-08 13:51:36.460: I/value(1257): j=1

return 结束整个循环体,直接返回

for (int i = 0; i < 10; i++) {
Log.d("value", "----->i=" + i);
for (int j = 0; j < 10; j++) {
if (j == 2) {
// return 结束所在层循环
return;
}
Log.i("value", "j=" + j + "");
}
}


10-08 13:56:45.092: D/value(1330): —–>i=0

10-08 13:56:45.092: I/value(1330): j=0

10-08 13:56:45.096: I/value(1330): j=1

同样地,再验证 三层循环中 return的作用,打印结果依然 在遇到return后 结束所有循环

for (int i = 0; i < 10; i++) {
Log.d("value", "----->i=" + i);
for (int j = 0; j < 10; j++) {
Log.i("value", "j=" + j + "");
for (int x = 0; x < 10; x++) {
if (x == 2) {
// return 结束所在层循环
return;
}
Log.i("value", "x=" + x + "");
}
}
}


10-08 14:00:11.796: D/value(1462): —–>i=0

10-08 14:00:11.796: I/value(1462): j=0

10-08 14:00:11.800: I/value(1462): x=0

10-08 14:00:11.800: I/value(1462): x=1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: