Java 允許為語句塊(通常是循環)添加標識符(標號),格式:labelName: statement。標號**只能**被 break 或 continue 引用,且一條語句前僅允許一個標號,標號後**不能**跟大括號。
break label:跳出標號標識的語句塊(通常是外層循環)。continue label:跳過標號標識循環的當前迭代,直接進入下一次迭代。public class LabelContinueDemo {
public static void main(String[] args) {
System.out.println("i j");
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 50; j++) {
if (j == 3) continue outer; // 跳過內層剩餘,i++
System.out.println(i + " " + j);
}
}
}
}
輸出:
i j 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
解析:內層循環未執行完 50 次,遇 continue outer 直接跳轉到外層 i++,開啟下一輪外層迭代。
public class LabelBreakDemo {
public static void main(String[] args) {
System.out.println("i j");
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 50; j++) {
if (j == 3) break outer; // 直接跳出 outer 整個循環
System.out.println(i + " " + j);
}
}
}
}
輸出:
i j 0 0 0 1 0 2
解析:break outer 直接跳出標號範圍,程序繼續執行外層循環之後的代碼(此處為 main 結束)。
break label 直接退出所有循環,避免無效遍歷。search:、processRow:),提升可讀性。return 等結構化寫法。