表達評估順序

按照以下規則評估 Java 表示式:

  • 運算元從左到右進行評估。
  • 運算子的運算元在運算子之前進行評估。
  • 根據運算子優先順序評估運算子
  • 引數列表從左到右進行評估。

簡單的例子

在以下示例中:

int i = method1() + method2();

評估順序是:

  1. = 運算子的左運算元被計算為 i 的地址。
  2. 計算+運算子(method1())的左運算元。
  3. 計算+運算子(method2())的右運算元。
  4. 評估+操作。
  5. 評估 = 操作,將新增結果分配給 i

請注意,如果可以觀察到呼叫的效果,你將能夠觀察到在呼叫 method2 之前呼叫 method1

具有副作用的運算子的示例

在以下示例中:

int i = 1;
intArray[i] = ++i + 1;

評估順序是:

  1. 計算 = 運算子的左運算元。這給出了 intArray[1] 的地址。
  2. 評估預增量。這將 1 新增到 i,並評估為 2
  3. 評估了+的右手運算元。
  4. +操作評估為:2 + 1 - > 3
  5. 評估 = 操作,將 3 分配給 intArray[1]

請注意,由於首先評估 = 的左側運算元,因此它不受++i 子表示式的副作用的影響。

參考: