首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java break 與 continue 詳細解析:含標籤跳轉、無限循環與最佳實踐

     編輯:Java 相關知識

基礎語法

關鍵字作用適用範圍
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

while 循環標籤範例

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 更簡潔。

最佳實踐建議

  1. 優先重構:將嵌套循環提取為方法,用 return 替代標籤跳轉,提升可讀性。
  2. 慎用標籤:僅在「必須跳出多層循環且無法提取方法」時使用。
  3. 避免無限循環隱患:while(true) 或 for(;;) 內部必須有明確 break 條件。
  4. 註解意圖:標籤跳轉屬非線性控制流,務必加註解說明業務邏輯。

總結

break 與 continue 是循環控制的核心工具,標籤機制延伸了它們在多層嵌套場景下的能力。掌握其精確語義、邊界條件(如增量表達式跳過)與最佳實踐,能編寫出高效且可維護的循環邏輯。現代開發中,優先考慮方法提取、Stream API 或函數式風格,減少手動跳轉帶來的認知負荷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved