常用方法
int i = 0; System.out.println("start"); for (; true; i++) { if (i == 5) { break; } system.out.println(i); } System.out.println("finish");
输出如下:
start
0
1
2
3
4
finish
int i = 0; System.out.println("start"); for (; i < = 12; i++) { if (i == 10) { continue; } System.out.println(i); } System.out.println("finish");
输出结果:
start
0
1
2
3
4
5
6
7
8
9
11
12
finish
东西很简单,从上面我们可以看出来:
- break,直接退出当前循环(根据输出结果中没有 5 以及 5 之后的来想)
- continue,退出本次循环,继续当前循环的下次循环(跟你输出结果中没有 10 来想想)
使用标签
标签就是后面跟有冒号的标识符,学过 C 的应该知道 C 的 goto 语句,就是运行到 goto 的时候直接跳转到标签所在的位置继续执行。
在 Java 中,取消了 goto 语句,但是保留了标签来进行跳转。来看一段 Thinking Java 书中的代码:
int i = 0; outer: // Can't have statements here for (; true;) { // infinite loop inner: // Can't have statements here for (; i < 10; i++) { print("i = " + i); if (i == 2) { print("continue"); continue; } if (i == 3) { print("break"); i++; // Otherwise i never // gets incremented. break; } if (i == 7) { print("continue outer"); i++; // Otherwise i never // gets incremented. continue outer; } if (i == 8) { print("break outer"); break outer; } for (int k = 0; k < 5; k++) { if (k == 3) { print("continue inner"); continue inner; } } } } System.out.println("finish");
对照着输出结果我们来看看它是如何来运行的。
输出结果:
i = 0 continue inner i = 1 continue inner i = 2 continue i = 3 break i = 4 continue inner i = 5 continue inner i = 6 continue inner i = 7 continue outer i = 8 break outer finish
可以看到外部的那个 for 语句是一个无限循环,直接进去之后,到第二层循环,循环的条件为 i<10,每次运行完成 i++。现在我们刚刚进入,i 还是默认的 0,先输出一个当前的 i 的值。然后开始依次和 2,3,7,8 进行对比,发现不相等之后,执行下面的 for 语句,这些都简单,就不仔细说了。
当 i=2 了,与 2 进行判断的时候为 true,执行 continue,终止本次循环(如果没有终止本次循环的话,continue inner 也是应该出现的吧)
当 i=3 了,看到了 break,那么退出当前离他最近的循环,但是因为它还在第一层循环里,所以他有开始继续从 i=4 开始往下执行
当 i=7 了,执行了 continue outer,根据 continue 的德行,它还得继续往下执行,所以它又进入了第一层循环,然后第二层循环。。。
当 i=8 了,执行了 break outer,break 比 continue 有骨气多了,好马不吃回头草,我出来就不进去了,所以直接跳过循环,到了程序的下一句,输出 finish
看懂了上面的这些,第三层 for 里面的 continue inner 就应该懂了
然后,如果我把第三层 for 里面的 continue inner 换成 break inner 呢?break 你硬气,不吃回头草是不是?
看输出:
i = 0
continue inner
…
…
…
生活所迫,原谅它吧
原谅他了吧,然后再来说说为什么有的 continue 或者 break 语句前面有的加了 i++,有的没有加。
在 for 循环中,只有到达 for 循环的末尾的时候。才会执行 for 循环中的 step。所以如果没有执行到 for 循环的末尾,是不会执行 i++操作的。
对于 break 来说,当程序看到 break 的时候,会直接退出当前循环,所以并没有执行 i++,为了避免下次 i 还是同样的值,我们要手动给他的值来加 1
而对于 continue 来说,会退出当前的本次循环,是会执行到循环末尾的,所以不用手动给 i 来加 1
对于 continue xxx 来说,看到这个之后就直接跳到标签的地方去执行了,那么它也就不会执行到循环的末尾。所以我们也要手动给他的值来加 1.
转载请注明:热爱改变生活.cn » Java 标签的使用
本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » Java 标签的使用