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會中斷并跳出标簽所指的循環。
使用标簽的唯一理由是有循環嵌套存在,想要從多層嵌套中跳出。