| 關鍵字 | 作用 | 適用範圍 |
|---|---|---|
break | 強制**退出**當前循環(或 switch) | for、while、do-while、switch |
continue | 結束**本次迭代**,直接進入下一次循環判斷 | for、while、do-while |
public class BreakAndContinue {
public static void main(String[] args) {
// for 循環
for (int i = 0; i < 100; i++) {
if (i == 74) break; // i 達 74 直接跳出整個循環
if (i % 9 != 0) continue; // 非 9 的倍數跳過輸出
System.out.println(i); // 輸出 0,9,18...72
}
// while 真無限循環
int i = 0;
while (true) {
i++;
int j = i * 27;
if (j == 1269) break; // 47*27=1269 跳出
if (i % 10 != 0) continue; // 非 10 的倍數跳過
System.out.println(i); // 輸出 10,20,30,40
}
}
}
輸出:
0 9 18 27 36 45 54 63 72 10 20 30 40
Java 無 goto,但提供**標籤**配合 break/continue 實現多層跳出:
outer: // 標籤必須緊鄰循環之前
for (int i = 0; i < 10; i++) {
inner:
for (int j = 0; j < 10; j++) {
if (j == 5) break outer; // 直接跳出 outer 循環
if (j == 3) continue outer; // 跳過 inner 剩餘,進入 outer 下一輪
System.out.println("i=" + i + ", j=" + j);
}
}
| 語句 | 無標籤 | 帶標籤 label |
|---|---|---|
break | 跳出當前最內層循環 | 跳出 label 標記的循環 |
continue | 進入當前最內層循環下一輪 | 進入 label 標記循環的下一輪 |
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; }
if (i == 7) { System.out.println("continue outer"); i++; continue outer; }
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
public class LabeledWhile {
public static void main(String[] args) {
int i = 0;
outer:
while (true) {
System.out.println("Outer while loop");
while (true) {
i++;
System.out.println("i = " + i);
if (i == 1) { System.out.println("continue"); continue; }
if (i == 3) { System.out.println("continue outer"); continue outer; }
if (i == 5) { System.out.println("break"); break; }
if (i == 7) { System.out.println("break outer"); break outer; }
}
}
}
}
輸出:
Outer while loop i = 1 continue i = 2 i = 3 continue outer Outer while loop i = 4 i = 5 break Outer while loop i = 6 i = 7 break outer
break 會跳過 for 的增量表達式(i++),需手動遞增(見範例 i==3、i==7 處)。return 更簡潔。return 替代標籤跳轉,提升可讀性。while(true) 或 for(;;) 內部必須有明確 break 條件。break 與 continue 是循環控制的核心工具,標籤機制延伸了它們在多層嵌套場景下的能力。掌握其精確語義、邊界條件(如增量表達式跳過)與最佳實踐,能編寫出高效且可維護的循環邏輯。現代開發中,優先考慮方法提取、Stream API 或函數式風格,減少手動跳轉帶來的認知負荷。