表達評估順序
按照以下規則評估 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
子表示式的副作用的影響。
參考: