使用标签代替goto关键字

众所周知,java中没有goto语句,但是保留了goto这个关键字。由于goto是在源码级上的跳转,多次使用goto会引起代码混乱容易出错,这也是java取消goto语句的目的所在,但是goto语句也有它的优点,在少数情况下goto还是组织控制流程的最佳手段。在java中虽然没有goto,但是我们可以用标签结合关键字(break,continue)来实现goto的功能。代码如下:

 1 package demo;
 2 public class LabeledFor {
 3     public static void main(String[] args) {
 4         int i = 0;
 5         outer:
 6             for(;true;){
 7                 inner:
 8                     for(; i < 10 ; i++){
 9                         System.out.println("i = " + i);
10                         if(i == 2){
11                             System.out.println("continue");
12                             continue;  //结束当前循环
13                         }
14                         if(i == 3){
15                             System.out.println("break");
16                             i++;
17                             break;  //强制退出循环
18                         }
19                         if(i == 7){
20                             System.out.println("continue outer");
21                             i++;
22                             continue outer;  //结束当前循环并回到标签outer处重新执行代码
23                         }
24                         if(i == 8){
25                             System.out.println("break outer");
26                             break outer;   //结束循环并回到标签outer处执行循环之外的代码
27                         }
28                         for(int k = 0;k < 5; k++){
29                             if(k == 3){
30                                 System.out.println("continue inner");
31                                 continue inner;  //结束当前循环并回到标签inner处重新执行代码
32                             }
33                         }
34                     }
35             }    
36         
37         System.out.println("break outer 跳出外部循环执行剩下的代码");
38         return;//结束return可以结束代码,可以体现更好的效果,这里就不演示了
39     }
40 }

打印结果:

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

  同样的规则也适用while循环

原文地址:https://www.cnblogs.com/dyfbk/p/6864241.html