
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.2.6 运算顺序

由一个运算符和对应的操作数构成的表达式是简单表达式。多个运算符和相应的操作数可以构成复杂表达式。计算这类表达式时,需要考虑运算符的优先级和结合性。下面将详细讲解这两个问题。
1.优先级
优先级是指在同一个表达式中多个运算符的运算先后顺序。例如,在四则运算中,先进行乘法、除法运算,然后进行加法、减法运算。在Java语言中,表达式也会按优先级进行运算。
(1)Java语言的加、减、乘、除、取余运算符的优先级如图3.8所示。

图3.8 算术运算符的优先级
【示例3-18】下面将计算10+2*9。代码如下:

10+2*9进行运算的顺序如图3.9所示。

图3.9 运算顺序
运行结果如下:

(2)增量/减量运算符和正/负运算符的优先级高于乘、除、取余运算符的优先级,且前已述及,加、减运算符的优先级低于乘、除、取余运算符的优先级,如图3.10所示。

图3.10 运算符的优先级
(3)如果需要修改运算顺序,可以为对应的部分添加括号( ),如以下代码:

(10+2)*9进行运算的顺序如图3.11所示。
运行结果如下:


图3.11 运算顺序
2.结合性
结合性是指多个同级运算符组成表达式的先后顺序。在Java语言中,结合性有两种,分别为左结合和右结合。左结合就是从左向右组成表达式,执行计算,如算术运算符就是左结合;右结合就是从右向左组成表达式,执行计算,如增量/减量运算符、正/负运算符和扩展赋值运算符就是右结合。
【示例3-19】下面将计算a+=b+=c+=5。代码如下:

a+=b+=c+=5进行运算的顺序如图3.12所示。
运行结果如下:


图3.12 运算顺序