复合赋值运算和优先级和结合性


这类运算的特点是:参与运算的量既是运算分量,又是存储对象。为避免对同一存储对象的地址重复计算,提高编译效率,Java引入复合赋值运算符。凡是双目运算符都可以与赋值运算符组合成复合赋值运算符。Java提供了11种复合赋值运算符。3.7总结了复合赋值运算的用法,如下:

3.7  复合赋值运算

运算符

用法

等价于

+=

exp1+=exp2

exp1= exp1+exp2

-=

exp1-=exp2

exp1= exp1-exp2

*=

exp1*=exp2

exp1= exp1*exp2

/=

exp1/=exp2

exp1= exp1/exp2

%=

exp1%=exp2

exp1= exp1%exp2

&=

exp1&=exp2

exp1= exp1&exp2

|=

exp1|=exp2

exp1= exp1|exp2

^=

exp1^=exp2

exp1= exp1^exp2

<<=

exp1<<=exp2

exp1= exp1<<exp2

>>=

exp1>>=exp2

exp1= exp1>>exp2

>>>=

exp1>>>=exp2

exp1= exp1>>>exp2


优先级和结合性


Java运算符是有严格的优先级的,它和代数运算中的先乘除后加减一样,按优先级从高到低的顺序。在一段程序代码中可能存在着各种运算符,Java语言中规定了出现各种运算符的时候,哪种运算符先被执行,哪种运算符后被执行,这种运算顺序称为优先级。优先级别高的运算符先进行运算。下面表3.8按从高到底的顺序列出了运算符的优先级。

3.8  算符的优先级

运算符

优先级

.   []…()

1

++   --   !   ~    instanceiof

2

new   (type)

3

*   /   %

4

+   -

5

<<   >>   >>>

6

<   >   <=    >=

7

==   !=

8

&

9

^

10

|

11

&&

12

||

13

?:

14

=  +=  -=  *=  /=  %=  ^=  

&=   |=   <<=   >>=   >>>=

15

在同一个表达式中出现多个相同优先级的运算符时,就需要考虑结合性。它分为左结合性和右结合性。左结合性指的就是从左向右进行运算。右结合性则反之。表3.9列出了运算符的结合性列表。

3.9  运算符的结合性

运算符

操作数

结合性

+  -  ++  --

一元运算符

右结合性

+  -  *  /  %

<  >  <=   >=  ==  !=

&&  ||  !

二元运算符

左结合性

=(赋值运算符)

二元运算符

右结合性

?:

三元运算符

右结合性



猜你喜欢

转载自blog.csdn.net/zyz0225/article/details/80696084