表達評估順序
按照以下規則評估 Java 表示式:
- 運算元從左到右進行評估。
- 運算子的運算元在運算子之前進行評估。
- 根據運算子優先順序評估運算子
- 引數列表從左到右進行評估。
簡單的例子
在以下示例中:
int i = method1() + method2();
評估順序是:
=運算子的左運算元被計算為i的地址。- 計算
+運算子(method1())的左運算元。 - 計算
+運算子(method2())的右運算元。 - 評估
+操作。 - 評估
=操作,將新增結果分配給i。
請注意,如果可以觀察到呼叫的效果,你將能夠觀察到在呼叫 method2 之前呼叫 method1。
具有副作用的運算子的示例
在以下示例中:
int i = 1;
intArray[i] = ++i + 1;
評估順序是:
- 計算
=運算子的左運算元。這給出了intArray[1]的地址。 - 評估預增量。這將
1新增到i,並評估為2。 - 評估了
+的右手運算元。 +操作評估為:2 + 1- >3。- 評估
=操作,將3分配給intArray[1]。
請注意,由於首先評估 = 的左側運算元,因此它不受++i 子表示式的副作用的影響。
參考: