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

Java break 與 continue 完整指南:標籤跳轉、巢狀迴圈控制與最佳實務

     編輯:Java 相關知識

break 與 continue 是迴圈流程控制的核心關鍵字。break 用於終結迴圈,continue 用於跳過本次迭代。掌握它們在巢狀迴圈、標籤跳轉中的行為,能寫出更清晰、高效的迴圈邏輯。

一、break 語句

基本用法

int i = 0;
while (i < 10) {
    i++;
    if (i == 5) {
        break;  // 直接結束整個 while 迴圈
    }
}
// 迴圈結束後繼續執行後續程式碼

適用於 for、while、do-while 三種迴圈,功能一致:立即跳出所在迴圈。

巢狀迴圈中的行為

for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.println(j);
        if (j == 3) {
            break;  // 只跳出內層 j 迴圈
        }
    }
    // 外層 i 迴圈繼續執行
}

鐵律: 無標籤 break 只能跳出最內層迴圈。

標籤跳轉:精準控制外層迴圈

outer:  // 標籤名稱,任意合法識別符,後接冒號
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.println(j);
        if (j == 3) {
            break outer;  // 直接跳出標籤對應的外層迴圈
        }
    }
}
  • 標籤必須緊貼目標迴圈之前。
  • break 標籤名 可跳出任意層級外層迴圈。
  • 標籤不能用於非迴圈語句(如 if 區塊)。

替代方案:布林旗標法

boolean done = false;
for (int i = 0; i < 10 && !done; i++) {
    for (int j = 0; j < 5; j++) {
        if (j == 3) {
            done = true;
            break;  // 跳出內層
        }
    }
}
// 外層迴圈條件 !done 失效,自然結束

無標籤環境下的通用寫法,可讀性略優於標籤(視團隊風格)。

二、continue 語句

基本用法

int i = 0;
while (i < 4) {
    i++;
    if (i == 2) {
        continue;  // 跳過本次剩餘迴圈體
    }
    System.out.println(i);  // i=2 時不會執行
}
// 輸出:1, 3, 4

跳轉目標差異:

  • while/do-while:跳至條件判斷處。
  • for:跳至迭代運算式(i++)處,再判斷條件。

巢狀迴圈與標籤 continue

outer:
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.println(j);
        if (j == 3) {
            continue outer;  // 直接跳至外層迴圈的 i++ 處
        }
    }
}

效果等同於結束本次外層迭代,直接進入下一次外層迭代。

三、對照表與最佳實務

關鍵字作用範圍巢狀迴圈預設行為標籤用法典型應用場景
break所在迴圈 / switch只跳出最內層break label; 跳出指定外層找到目標提前結束搜尋、異常情況退出
continue所在迴圈只跳過最內層本次迭代continue label; 跳過指定外層本次迭代過濾不符條件資料、跳過錯誤記錄繼續處理

程式碼風格建議

  1. 優先重構迴圈條件:能用 while (condition) 表達的邏輯,別用 break。
  2. 標籤慎用:僅在巢狀層級 ≥ 3 且重構成本高時使用,並加註解說明跳轉意圖。
  3. 避免「麵條式跳轉」:單一方法中多個標籤跳轉是維護噩夢,拆分方法更佳。
  4. for-each 迴圈不支援 break/continue 標籤,需改用索引迴圈。

總結

break = 結束,continue = 跳過。巢狀迴圈預設只影響最內層,標籤提供精準外層控制。善用它們能簡化邏輯,濫用則製造難讀程式碼。原則:能用條件表達就用條件,實在需要才跳轉。

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