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

Java 控制流語句完全指南:順序、選擇、循環與跳轉語法詳解

     編輯:Java 綜合教學

前言:控制流是程序靈魂,結構化編程三大結構一網打盡

Java 控制流語句遵循結構化編程原則,僅包含順序、選擇、循環三大基本結構,配合跳轉語句即可表達任意複雜邏輯。本文系統梳理語法細節、執行流程、常見陷阱與最佳實踐,適合初學夯實基礎、老手快速查閱。

一、 順序結構:默認自上而下

無特殊語法,按代碼編寫順序依次執行。注意:變量聲明必須在使用前,作用域以大括號 {} 為界。

二、 選擇結構:條件分支

2.1 if-else 語句


// 單分支
if (condition) {
    // 條件為 true 執行
}

// 雙分支
if (condition) {
    // true 分支
} else {
    // false 分支
}

// 多分支
if (condition1) {
} else if (condition2) {
} else {
    // 以上都不滿足
}

最佳實踐:

  • 永遠加大括號,哪怕只有一句語句,防止後續維護漏加導致邏輯錯誤。
  • 條件判斷結果必須為 boolean,不可像 C/C++ 直接用整數。
  • 範圍判斷優寫 if (score >= 90) 而非 if (90 <= score && score <= 100),利用短路特性簡化邏輯。

2.2 switch 語句 (JDK 12+ 支持 switch 表達式)


// 傳統 switch (JDK 1.0+)
switch (expression) { // byte, short, int, char, enum, String (JDK 7+)
    case value1:
        // 執行語句
        break; // 必須 break,否則貫穿執行下一 case
    case value2:
    case value3: // 合並 case
        // 執行語句
        break;
    default:
        // 以上都不匹配
}

// JDK 12+ Switch 表達式 (推薦:無 break、無貫穿、返回值)
String result = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> "6";
    case TUESDAY                -> "7";
    case THURSDAY, SATURDAY     -> "8";
    case WEDNESDAY              -> "9";
    default                     -> throw new IllegalStateException("Invalid day: " + day);
};

關鍵點:

  • case 後只能是編譯期常量(字面量、final 變量、enum),不能是變量或表達式。
  • break 缺失會導致「貫穿」執行後續 case,極易產生 Bug。
  • JDK 12+ 箭頭語法 -> 自動跳出,代碼更簡潔安全。

三、 循環結構:重複執行

3.1 while 循環(先判斷後執行)


// 基本語法
while (condition) {
    // 條件為 true 重複執行
}

// 死循環寫法
while (true) {
    if (exitCondition) break;
    // 業務邏輯
}

執行順序:判斷 → 執行 → 判斷 → 執行 ... 直到 false。

3.2 do-while 循環(先執行後判斷,至少執行一次)


do {
    // 循環體
} while (condition);

適用場景:菜單交互、至少一次嘗試的重試邏輯。

3.3 for 循環(計數器控制)


// 傳統 for (JDK 1.0+)
for (int i = 0; i < 10; i++) {
    // i 作為計數器
}

// 增強 for / for-each (JDK 5+,遍歷數組/Collection)
int[] arr = {1, 2, 3};
for (int num : arr) {
    System.out.println(num); // 無索引,不可修改原數組元素
}

// JDK 8+ Stream 流式遍歷 (函數式風格)
Arrays.stream(arr).forEach(System.out::println);

傳統 for 執行順序:初始化 → 判斷 → 執行 → 迭代 → 判斷 ...

四、 跳轉語句:打破常規流程

4.1 break:跳出最近層循環或 switch


for (int i = 0; i < 10; i++) {
    if (i == 5) break; // 直接跳出 for 循環
    System.out.println(i); // 輸出 0-4
}

4.2 continue:跳過本次循環,進入下一次迭代


for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) continue; // 跳過偶數
    System.out.println(i); // 輸出 1,3,5,7,9
}
// for 循環中 continue 直接跳到 i++ 迭代步驟
// while/do-while 中 continue 跳到條件判斷

4.3 標籤跳轉:跳出多層嵌套循環


outer: // 標籤名任意,建議語義化
for (int i = 0; i < 3; i++) {
    inner:
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) break outer; // 直接跳出外層循環
        System.out.println("i=" + i + ", j=" + j);
    }
}
// 輸出: (0,0) (0,1) (0,2) (1,0) → 遇到 break outer 結束

4.4 return:方法結束,返回調用處

  • void 方法用 return; 或省略。
  • 有返回值方法必須 return value;,且所有路徑必須返回。
  • finally 塊在 return 後仍會執行(除非 System.exit())。

五、 邊界與陷阱總結

陷阱 錯誤示例 正確做法
死循環 for(;;) 無退出條件 確保循環條件會變化,或內部有 break
循環邊界 for(int i=0; i<=arr.length; i++) → IndexOutOfBounds i < arr.length 或增強 for
switch 貫穿 漏寫 break 加 break 或用 JDK 12+ 箭頭語法
修改集合遍歷 for(E e: list) list.remove(e) → ConcurrentModificationException 用 Iterator.remove() 或 ListIterator

結語

控制流語句是編程的骨架。掌握 if/switch 的分支藝術、for/while 的循環節奏、break/continue/return 的跳轉韻律,再配上邊界思維與現代語法糖,即能寫出清晰、高效、不易出錯的 Java 代碼。

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