java运算符的优先级

下图是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

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

优先级顺序看完了,我们来通过代码,加强一下:

int n = 3>4 ? 100 : 200;   

这行的代码运算执行顺序我们来写一下:

1.执行 3>4操作,得到布尔类型false的结果

2.通过结果false,将对应的表达式2的结果200,作为运算的最终结果

3.把200 赋值给变量n

接下来,我们看一个比较复杂的代码:

int a = 5;

 int b = 3;

 int c = 1;

int n2 = (a>b && b>c) ? (c++) : (++c);

         这段代码运算执行顺序我们也写一下:

1.小括号优先级高,我们先运算第一组小括号中的代码

1.1. 比较运算符”>” 优先级大于 逻辑运算符”&&”

先执行 a>b,得到结果true;

再执行 b>c,得到结果true;

最后执行 a>b的结果 && b>c的结果,即 true && true, 结果为true

2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++

先将变量c的原有值赋值给变量n2,即n2值为1;

再将变量c的值自增1,更新为2。

原文地址:https://www.cnblogs.com/gaowc/p/10248999.html