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

Java 三大循環語句深度對比:for、while、do-while 異同詳解

     編輯:Java 綜合教學

Java 三大循環語句深度對比:for、while、do-while 異同詳解

語法結構對比

循環類型語法格式執行順序適用場景
for for(初始化; 條件; 迭代) { 體 } 初始化 → 判斷條件 → 執行體 → 迭代 → 判斷條件... 已知循環次數、遍歷集合/數組、計數器控制
while 初始化; while(條件) { 體; 迭代; } 初始化 → 判斷條件 → 執行體 → 迭代 → 判斷條件... 未知循環次數、條件驅動、讀取流/數據庫結果集
do-while 初始化; do { 體; 迭代; } while(條件); 初始化 → 執行體 → 迭代 → 判斷條件 → 執行體... 至少執行一次、菜單選擇、用戶輸入驗證

代碼示例:計算 1-100 累加和

for 循環

public class ForDemo {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println("sum = " + sum); // 5050
    }
}

while 循環

public class WhileDemo {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1; // 初始化
        while (i <= 100) { // 判斷
            sum += i;      // 體
            i++;           // 迭代
        }
        System.out.println("sum = " + sum); // 5050
    }
}

do-while 循環

public class DoWhileDemo {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        do {
            sum += i; // 體
            i++;      // 迭代
        } while (i <= 100); // 判斷
        System.out.println("sum = " + sum); // 5050
    }
}

核心區別總結

  1. 首次執行保證:do-while 無條件執行一次循環體,然後判斷條件;for 和 while 是先判斷後執行,若初始條件不滿足則一次不執行。
  2. 變量作用域:for 循環的初始化變量(如 int i=1)作用域僅限循環內部;while/do-while 的控制變量通常定義在外部,作用域較大。
  3. 語義清晰度:
    • for:語義為「重複 N 次」,所有控制元素集中在括號內,閱讀性最佳。
    • while:語義為「當條件成立時持續」,適合條件複雜或由外部決定的場景。
    • do-while:語義為「先做一次,再決定是否繼續」。
  4. 相互轉換:三者邏輯等價,可相互轉換。但首選最語義化的寫法,降低認知負荷。

常見陷阱與最佳實踐

  • 死循環:while(true) 或 for(;;) 需配合 break 退出,否則程序掛起。
  • 邊界條件:注意 <= vs <,i++ vs ++i 在循環條件中的細微差別。
  • 資源關閉:while((line = reader.readLine()) != null) 模式讀取流時,確保 finally 關閉資源(或 try-with-resources)。
  • 增強 for (for-each):Java 5+ 提供 for(Type item : collection),簡化集合/數組遍歷,無索引需求時優先使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved