java 中跳转语句使用break、continue和标签,各自或组合完成相应的功能。
今天做题时遇到关于标签命名规范,顺便将跳转语句语法都看了一遍,很有收获。
在《Java编程思想》一书中,作者详细阐述,现将案例代码写在下面:
public class LabeledFor { public static void main(String[] args) { int i=0; outer: for(;true;){ inner: for(;i<10;i++){ System.out.println("i="+i); if(i==2){ System.out.println("continue"); continue; } if(i==3){ System.out.println("break"); i++; //otherwise i never gets incremented break; } if(i==7){ System.out.println("continue outer"); i++; //otherwise i never gets incremented continue outer; } if(i==8){ System.out.println("break outer"); break outer; } for(int k=0;k<5;k++){ if(k==3){ System.out.println("continue inner"); continue inner; } } } } } }
运行结果见下图:
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
自认为比较重要的一点是,break中断for循环,而且是在抵达for循环的末尾之前,也就是说,递增表达式将不会执行。continue确不会跳过递增语句。
同样的,这个例子中,当i==7的情况下,continue outer语句会跳到循环顶部,而且也会跳过递增。
如果没有break outer,就没有办法从内部循环里跳出外部循环。这是由于break本身只能中断最内层的循环(continue同样如此)。
如果想中断同时退出,简单地用一个return即可。