java关键字continue,Java 之关键字 continue ,break

$break: 只能用在switch语句或者循环语句当中,除此之外不能单独应用,否则编译的时 候会报错;

$continue: 它的应用范围要比break小一层,有且只能用在循环语句当中,continue跳回到循环的顶部。

举个thingking in java 的例子:

 
 

public class LabeledFor {public static void main(String[] args) {

int i = 0;outer: // Can't have statements herefor(; true ;) { // infinite loop

inner: // Can't have statements herefor(; i < 10; i++) {

prt("i = " + i);if(i == 2) {

prt("continue");

continue;}

if(i == 3) {prt("break");i++; // Otherwise i never

// gets incremented.break;

}if(i == 7) {

prt("continue outer");i++; // Otherwise i never// gets incremented.

continue outer;}

if(i == 8) {prt("break outer");

break outer;}

for(int k = 0; k < 5; k++) {if(k == 3) {

prt("continue inner");

continue inner;}

}}

}// Can't break or continue// to labels here

}static void prt(String s) {

System.out.println(s);}

}

这里用到了在其他例子中已经定义的 prt()方法。注意break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于break跳过了递增表达式,所以递增会在i==3 的情况下直接执行。在 i==7 的情况下,continue outer 语句也会到达循环顶部,而且也会跳过递增,所以它也是直接递增的。

备注: 关于带标签的break和continue

Java 中的标签是为循环设计的,是为了在多重循环中方便的使用 break 和 coutinue 而设计的。正是由于这个原因,Java 的标签只能定义在三种循环 (for() {}, do{} while(), while() {}) 的开始位置,否则编译器会报告说找不到标签。

在循环前面加上标签,就好像给循环起了个名字。而后在循环中使用 break 或者 continue 语句的时候,就可以带上这个标签做为参数,指明跳出 (break) 或者继续 (continue) 哪一个循环,如“break mylabel;”、“continue mylabel;”。

如果没有break outer语句,就没有办法在一个内部循环里找到出外部循环的路径。这是由于break本身只能中断最内层的循环(对于continue 同样如此)。当然,若想在中断循环的同时退出方法,简单地用一个return 即可。下面这个例子向大家展示了带标签的break以及continue语句在while循环中的用法:

 
 

public class LabeledWhile {public static void main(String[] args) {

int i = 0;outer:while(true) {

prt("Outer while loop");while(true) {

i++;prt("i = " + i);if(i == 1) {

prt("continue");

continue;}

if(i == 3) {prt("continue outer");continue outer;

}if(i == 5) {

prt("break");

break;}

if(i == 7) {prt("break outer");

90

break outer;}

}}

}static void prt(String s) {

System.out.println(s);}

}

同样的规则亦适用于while:(1) 简单的一个 continue 会退回最内层循环的开头(顶部),并继续执行。(2) 带有标签的 continue 会到达标签的位置,并重新进入紧接在那个标签后面的循环。(3) break 会中断当前循环,并移离当前标签的末尾。(4) 带标签的break会中断当前循环,并移离由那个标签指示的循环的末尾。这个方法的输出结果是一目了然的:

大家要记住的重点是:在Java 里唯一需要用到标签的地方就是拥有嵌套循环,而且想中断或继续多个嵌套级别的时候。在Dijkstra的“Goto有害”论中,他最反对的就是标签,而非goto。随着标签在一个程序里数量的增多,他发现产生错误的机会也越来越多。标签和goto 使我们难于对程序作静态分析。这是由于它们在程序的执行流程中引入了许多“怪圈”。但幸运的是,Java 标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过特别的方式到处传递程序的控制权。由此也引出了一个有趣的问题:通过限制语句的能力,反而能使一项语言特性更加有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值