Java 中的运算符的左右结合性是什么意思
所有的数学运算符都认为是从左到右运算的,Java 语言中大部分运算符也是从左到右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。
乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。
当有多中运算符参与运算的时候,先要考虑优先级,有相同优先级的就看结合性以决定运算顺序。
因为这样,所以,如果没有两个相同优先级的运算,就不存在考虑结合性的问题了。一个 ?: 是体现不出来结合性的。 请看这个:
a?b:c?d:e
这个要怎么算?先看优先级,两个一样。再看结合性,右结合,所以先算:
c?d:e
再算:
a?b:(c?d:e)
这就是所谓右结合。如果是左结合的话 就是先算:
a?b:c
再算:
(a?b:c)?d:e
实际上,一般结合性的问题都可以用括号来解决。