首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java for 循環變量作用域詳解:為什麼循環結束後 i 的值是 3 而不是 2?

     編輯:程式設計疑難解答

代碼示例

public class BlackDemo2 {
    static int i;
    
    public static void main(String[] args) {
        for (i = 0; i < 3; i++) {
            int a = 0;
            int b = 0;
            a += i;
            System.out.println("第 " + i + " 次運行時的 i 值是 " + i);
        }
        System.out.println("跳出 for 循環時 i 的值是 " + i);
    }
}

輸出結果

第 0 次運行時的 i 值是 0
第 1 次運行時的 i 值是 1
第 2 次運行時的 i 值是 2
跳出 for 循環時 i 的值是 3

逐步執行流程圖解

階段i 的值條件 i < 3動作
初始化0true進入循環體
第 1 次迭代結束1 (i++)true進入循環體
第 2 次迭代結束2 (i++)true進入循環體
第 3 次迭代結束3 (i++)false跳出循環

核心知識點

  1. for 循環三要素執行順序:初始化 → 判斷條件 → 執行循環體 → 更新表達式 (i++) → 再次判斷條件...
  2. 循環變量作用域:此處 i 定義為 static 類變量,作用域為整個類,循環結束後 i 保留最後更新後的值(3)。
  3. 終止條件:當 i = 3 時,i < 3 為 false,循環終止。此時 i 已經是 3。

常見誤區

❌ 錯誤認知:「循環執行 3 次,i 應該是 2」

✅ 正確理解:「循環執行 3 次,但 i++ 共執行了 3 次(0→1, 1→2, 2→3),最後一次判斷失敗時 i=3」

最佳實踐建議

// 推薦:將循環變量限制在 for 內部,避免污染外部作用域
for (int i = 0; i < 3; i++) {
    // 此處 i 僅在循環內可見
}
// 這裡訪問 i 會編譯報錯

這樣既符合「最小作用域原則」,也能避免循環後誤用變量值的 Bug。

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