运算符优先权

当表达式包含多个运算符时,可能会以不同的方式读取它。例如,可以通过两种方式读取数学表达式 1 + 2 x 3

  1. 添加 12 并将结果乘以 3。这给出了答案 9。如果我们添加括号,这看起来像 ( 1 + 2 ) x 3
  2. 1 添加到乘以 23 的结果中。这给出了答案 7。如果我们添加括号,这看起来像 1 + ( 2 x 3 )

在数学中,惯例是以第二种方式阅读表达式。一般规则是在加法和减法之前进行乘法和除法。当使用更高级的数学符号时,要么意思是不言而喻(对于训练有素的数学家!),要么添加括号以消除歧义。在任何一种情况下,符号传达意义的有效性取决于数学家的智慧和共享知识。

Java 基于所使用的运算符的优先级,对如何读取表达式有相同的明确规则。

通常,每个运算符都被赋予优先值; 见下表。

例如:

  1 + 2 * 3

+的优先级低于*的优先级,因此表达式的结果为 7,而不是 9。

1 Lambda 表达式优先级很复杂,因为它也可以在强制转换后发生,或者作为条件三元运算符的第三部分。