快速提问。在Java中,AND优先于OR吗?例如,这段代码是如何解释的?
if(statement1 && statement2 || statement3)
这和?相同?
if(statement1 && (statement2 || statement3))
或
if((statement1 && statement2) || statement3)
提前致谢。
答案 0 :(得分:6)
是。这很容易找到,API文档有一个列出运算符优先级的表:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
但是,我认为理解为什么 &&
应该优先于||
是个好主意:前者在很多方面都是乘法动作,而后者是添加剂。考虑两个独立事件A
和B
,(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 += 5
与a *= (b += 5)
答案 2 :(得分:2)
是的,according to the documentation,&&
优先于||
(除非您使用括号)。