踏平南天山 参考文章

Java 中的运算符的左右结合性是什么意思

所有的数学运算符都认为是从左到右运算的,Java 语言中大部分运算符也是从左到右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。

乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。

当有多中运算符参与运算的时候,先要考虑优先级,有相同优先级的就看结合性以决定运算顺序。

因为这样,所以,如果没有两个相同优先级的运算,就不存在考虑结合性的问题了。一个 ?: 是体现不出来结合性的。 请看这个:

a?b:c?d:e

这个要怎么算?先看优先级,两个一样。再看结合性,右结合,所以先算:

c?d:e

再算:

 a?b:(c?d:e)

这就是所谓右结合。如果是左结合的话 就是先算:

a?b:c

再算:

(a?b:c)?d:e

实际上,一般结合性的问题都可以用括号来解决。