Java 語言設計刻意移除 goto 語句,goto 僅作為保留關鍵字存在,防止開發者濫用導致「麵條代碼」。但在循環體內 (for、while、do-while),可透過 語句標籤 搭配 break/continue 實現類似 goto 的可控跳轉。
標籤名:
循環語句 { ... }
break:結束當前層循環,執行循環後續代碼。continue:結束本次迭代,直接進入下一輪迭代。break 標籤名;:中斷並跳出標籤指定的那層循環(含外層)。continue 標籤名;:跳轉至標籤指定的循環,繼續執行該層下一輪迭代。import java.util.Random;
public class LabelTest {
public static void main(String[] args) {
outer: // 外層循環標籤
for (int i = 0; i < 10; i++) {
System.out.println("\nOuter loop: " + i);
for (int j = 0; j < 10; j++) {
System.out.print(" " + j);
if (j == 5) {
System.out.println(" --> 觸發 break outer");
break outer; // 直接跳出外層循環
}
}
}
System.out.println("\n程式繼續執行...");
}
}
輸出結果: 外層執行 i=0 時,內層跑到 j=5 觸發 break outer,直接跳離雙層循環,印出「程式繼續執行...」。若用單獨 break 僅能跳出內層。
searchLoop:、retryLoop:) 而非 outer:。 return、布林旗標、或重構為 Stream API (Java 8+) 更清晰易維護。Java 以結構化程式設計為核心,標籤機制是妥協產物,而非鼓勵濫用。掌握其語義與限制,在真正需要時精準施展,才是成熟開發者的態度。