Java中没有goto,但是goto仍是Java中的保留字。当遇到跳出多重循环的时候,首先考虑标签,标签是后面跟有冒号的标识符,break和continue通常只会中断当前循环,和标签一起使用,就会中断循环并跳到标签所在的地方。
label:
outer-iteration{
inner-iteration{
//...
break; //(1)
//...
continue; //(2)
//...
continue label; //(3)
//...
break label; //(4)
}
}
在(1)处,break中断内部循环,回到外部循环;
在(2)处,continue使执行点回到内部循环起始处,继续执行;
在(3)处,continue label同时中断内外部循环,回到label处,继续执行循环;
在(4)处,break label中断内外部循环,回到label处,并不继续执行循环。
outer:
for(int i = 0; i < 10;i++) {
inner:
for(int j = 0;j < 10;j++) {
if(j == 2)
continue inner;
if(j == 4)
continue outer;
if(i == 3)
break inner;
if(i == 5)
break outer;
System.out.println("i: " + i + ", j: " + j);
}
}
输出:
i: 0, j: 0
i: 0, j: 1
i: 0, j: 3
i: 1, j: 0
i: 1, j: 1
i: 1, j: 3
i: 2, j: 0
i: 2, j: 1
i: 2, j: 3
i: 4, j: 0
i: 4, j: 1
i: 4, j: 3