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

Java for 迴圈中 ++i 與 i++ 的行為差異圖解

     編輯:程式設計綜合問答

核心差異

  • 前綴遞增 (++i): 先將變數值加 1,運算式值為遞增後的新值。
  • 後綴遞增 (i++): 先取得變數當前值作為運算式值,然後才將變數加 1。

在 for 迴圈標頭中的實際影響

// 寫法 A:後綴
for (int i = 0; i < 5; i++) { ... }

// 寫法 B:前綴
for (int i = 0; i < 5; ++i) { ... }

結論:在獨立陳述式 i++; 或 ++i; 以及 for 迴圈的迭代表達式中,兩者最終效果完全相同,i 都會遞增 1,迴圈執行次數無差異。 編譯器會生成相同的位元碼。

差異僅出現在「參與更大運算式」時

int i = 0;
int a = i++; // a=0, i=1
int b = ++i; // i=2, b=2

// 陣列索引經典錯誤
int[] arr = {10, 20, 30};
int idx = 0;
System.out.println(arr[idx++]); // 輸出 arr[0] = 10
System.out.println(arr[++idx]); // 輸出 arr[2] = 30 (idx 先變 2)

效能迷思

早期 C/C++ 編譯器未優化時,++i 避免建立暫存副本,效能略優。現代 Java JIT 編譯器對兩者生成相同機器碼,無效能差異。

最佳實踐建議

  • 獨立陳述式 / for 迭代:習慣用 ++i (語意更清晰:遞增動作本身),但 i++ 完全可接受。
  • 參與運算式/索引:嚴格區分前後綴,根據邏輯需求選擇,避免單行多副作用降低可讀性。

圖解重點:for 迴圈迭代表達式中,i++ 與 ++i 無任何行為差異。

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