java运算符优先级排序正确的是哪些?

TheDisguiser 2020-04-19 22:21:48 java常见问答 8243

在Java中,运算符是不可缺少的一份子,它支撑着Java的各种算法操作,与Java不可分离。但在Java运算符中也有优先级分别,你知道都是谁先谁后吗?跟小编一起来看看吧。

Java中的优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

基本的优先级需要记住:

指针最优,单目运算优于双目运算。如正负号。

先乘除,后加减。

先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7.

逻辑运算最后计算。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2,这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下面具有最高优先级的运算符在最上面,最低优先级的在底部。

类别              操作符                关联性
后缀             () [] . (点操作符)    左到右
一元             + + - !?             右到左
乘性          * /%                    左到右
加性          + -                      左到右
移位          >> >>>  <<               左到右
关系          >> = << =                左到右
相等          ==  !=                   左到右
按位与         &                      左到右
按位异或     ^                         左到右
按位或         |                       左到右
逻辑与         &&                      左到右
逻辑或         | |                     左到右
条件            ?:                   右到左
赋值    = + = - = * = / =%= >> = << =&= ^ = | =    从右到左
逗号    ,                             左到右

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

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。

以上就是今天的所有内容了,更多有关Java入门的知识请持续关注本网站了解吧。