運算子優先權
當表示式包含多個運算子時,可能會以不同的方式讀取它。例如,可以通過兩種方式讀取數學表示式 1 + 2 x 3
:
- 新增
1
和2
並將結果乘以3
。這給出了答案9
。如果我們新增括號,這看起來像( 1 + 2 ) x 3
。 - 將
1
新增到乘以2
和3
的結果中。這給出了答案7
。如果我們新增括號,這看起來像1 + ( 2 x 3 )
。
在數學中,慣例是以第二種方式閱讀表示式。一般規則是在加法和減法之前進行乘法和除法。當使用更高階的數學符號時,要麼意思是不言而喻(對於訓練有素的數學家!),要麼新增括號以消除歧義。在任何一種情況下,符號傳達意義的有效性取決於數學家的智慧和共享知識。
Java 基於所使用的運算子的優先順序,對如何讀取表示式有相同的明確規則。
通常,每個運算子都被賦予優先值; 見下表。
例如:
1 + 2 * 3
+
的優先順序低於*
的優先順序,因此表示式的結果為 7,而不是 9。
1 Lambda 表示式優先順序很複雜,因為它也可以在強制轉換後發生,或者作為條件三元運算子的第三部分。