java中也有类似goto的写法,这与break和continue有关,但不是一个跳转,而是中断迭代的一种方法。标签是后面跟有冒号的标示符如下:
label:
下面是标签用于for循环的例子:
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++;
break; //break会中断for循环,在末尾之前 i++不会执行,所以要手动i++
}
if (i == 7){
System.out.println("continue outer");
i++;
continue outer; //跳出循环顶部,也不会执行i++
}
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
continue和break的规则如下:
- 一般的continue会退回内层循环的开头,并继续执行。
- 带标签的continue会到达标签的位置,并重新进入紧接在标签后的循环。
- 一般的break会中断并跳出当前循环。
- 带标签的break会中断并跳出标签所指的循环。