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

Java 循環標籤(Label)作用與 break/continue 精確控制

     編輯:Java 相關知識

什麼是標籤?

標籤是標識符後接冒號(labelName:),置於循環語句之前,配合 break labelName 或 continue labelName 實現跳出/繼續指定外層循環。

語法

outerLoop: for (int i = 0; i < 10; i++) {
    innerLoop: for (int j = 0; j < 10; j++) {
        if (condition) break outerLoop;   // 直接跳出外層循環
        if (condition) continue outerLoop; // 直接進入外層下一次迭代
    }
}

對比:無標籤 vs 有標籤

語句無標籤有標籤
break跳出最近的 switch/循環跳出指定標籤的循環
continue進入最近循環下一次迭代進入指定標籤循環下一次迭代

實戰範例:查找二維陣列中首個滿足條件的元素

int[][] matrix = {{1,2,3}, {4,5,6}, {7,8,9}};
boolean found = false;

searchLabel:
for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        if (matrix[i][j] == 5) {
            System.out.printf("找到於 [%d][%d]%n", i, j);
            found = true;
            break searchLabel; // 直接跳出雙層循環
        }
    }
}
if (!found) System.out.println("未找到");

範例:跳過外層循環當前迭代

outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            System.out.println("跳過外層 i=" + i + " 的剩餘內層迭代");
            continue outer; // 直接進入外層 i+1
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}
/* 輸出:
i=1, j=1
跳過外層 i=1 的剩餘內層迭代
i=2, j=1
跳過外層 i=2 的剩餘內層迭代
i=3, j=1
跳過外層 i=3 的剩餘內層迭代
*/

最佳實踐與注意事項

  1. 標籤命名:使用有意義名稱(searchLoop、retryLoop),避免單字母。
  2. 適度使用:過度使用會導致「面條代碼」,優先考慮將內層邏輯提取為方法,用 return 替代。
  3. 不可跨方法:標籤僅在方法內部有效,不能跨越方法邊界。
  4. 不適用於 switch:break label 僅針對循環,switch 無標籤機制(JDK 12+ switch expression 已不需 break)。

總結

標籤為 Java 提供了精確控制多層循環流程的能力,在「多層嵌套循環需整體跳出/跳過」場景下極其實用。善用標籤可避免額外布爾標誌變量,使代碼更清晰;但請克制使用,優先重構為小方法。

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