很多初學者混淆了「代碼讀取順序」、「運算符優先級」與「表達式求值順序」。本文通過對比人類閱讀習慣、編譯器處理邏輯與 CPU 執行機制,徹底釐清 Java 中表達式的計算規則。
int a = 1, b = 2, c = 3;
int d = a + b * c; // 結果 = 7
運算步驟:
* 先算:b * c = 6+:a + 6 = 7d這不是從左到右依次讀取運算(那會得到 9),而是遵循數學優先級規則。
當表達式包含副作用(如 ++、方法調用)時,Java 強制規定操作數從左到右求值:
int i = 0;
int x = i++ + i++; // x = 0 + 1 = 1,i 變為 2
// 步驟:先取左邊 i(0),後取右邊 i(1),最後相加
這與 C/C++「未定義求值順序」形成鮮明對比,是 Java 可移植性的關鍵設計。
文章中提到的 Intel CPU 內部小端存儲、阿拉伯語右到左顯示等例子,說明了內部表示與外部表現分離的計算機科學原理:
Java 代碼「讀取」是左到右,「計算」遵循優先級,「副作用」嚴格左到右。理解這三層含義,能避免 90% 的表達式求值誤區。