运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的。那么当多个运算符出现在一个表达式中,谁先谁后呢?

java命中条件越多越靠前 java命中条件越多越靠前嘛_java

        这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

        这套视频讲的都是Java基础,简单易懂,大家可以参考下(PS:运算符优先级在第48节)

        Java300集零基础适合初学者视频

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

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

expr++ expr--

从左到右

一元

++expr --expr + - ~ !

从右到左

乘性

* /%

左到右

加性

+ -

左到右

移位

>> >>> <<

左到右

关系

> >= < <=

左到右

相等

== !=

左到右

按位与


左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / =%= >> = << =&= ^ = | =

从右到左

逗号


左到右

        使用优先级为的小括号(),可以改变其他运算符的优先级,即如果需要将具有较低优先级的运算符先运算,则可以使用小括号将该运算符和操作符括起来

(x-y)*z/2

        在这个表达式中先进行括号内的减法运算,再将结果与 z 相乘,最后将积除以 2 得出结果。整个表达式的顺序按照从左向右执行,比较容易理解。

java命中条件越多越靠前 java命中条件越多越靠前嘛_运算符优先级_02

再来看一个复杂的表达式,如下所示。

--y || ++x && ++z;

        这个表达式中包含了算术运算符和逻辑运算符。根据上表中列出的优先级,可以确定它的执行顺序如下:

  1. 先计算 y 的自减运算符,即 --y
  2. 再计算 x 的自增运算符,即 ++x
  3. 接着计算 z 的自增运算符,即 ++z
  4. 由于逻辑与比逻辑或的优先级高,这里将2和3 的结果进行逻辑与运算,即 ++x && ++z
  5. 最后将4的结果与1进行逻辑或运算,即 1 || 4。

        如果没有上述对该表达式执行顺序的说明,第一眼看到它时将很难识别优先级。对于这类问题,可以通过添加小括号使表达的顺序更加清晰,而不用去查优先级表。如下所示为改进后的表达式。

(--y)||((++x)&&(++z));

技巧:记住这么多运算符的优先级确实比较困难,所以大家在日常使用中尽量使用小括号来组织!

        运算符优先级大概就是这样了,大家理解了吗?如果觉得文字枯燥难懂的朋友可以看视频学习理解,更容易掌握!!

        今天主要就给大家分享这些了,有其他意见和想法的朋友可以留言讨论哦,我们一起学习,一起进步!