AND优先于OR吗?

时间:2013-01-31 15:57:05

标签: java

快速提问。在Java中,AND优先于OR吗?例如,这段代码是如何解释的?

if(statement1 && statement2 || statement3)

这和?相同?

if(statement1 && (statement2 || statement3))

if((statement1 && statement2) || statement3)

提前致谢。

3 个答案:

答案 0 :(得分:6)

是。这很容易找到,API文档有一个列出运算符优先级的表:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

但是,我认为理解为什么 &&应该优先于||是个好主意:前者在很多方面都是乘法动作,而后者是添加剂。考虑两个独立事件AB(A and B)的概率为p(A)*p(B),而(A or B)的概率为p(A) + p(B)。通过类比着名的*优先于+的规则,这就解释了为什么应该以这种方式评估逻辑运算符。

答案 1 :(得分:5)

Oracle tutorial for operators &&中所述,优先级高于||

注意:&的优先级高于|,高于&&,然后||

从左到右评估相同优先级的运算符(赋值运算符除外)。例如由于订单很重要,1 + 2 + "3"1 + (2 + "3")不同。同样100 / 10 / 2 != 100 / (10 / 2)

对于赋值运算符a *= b += 5a *= (b += 5)

相同

答案 2 :(得分:2)

是的,according to the documentation&&优先于||(除非您使用括号)。