0

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

if(statement1 && statement2 || statement3)

这和哪个一样?

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

或者

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

提前致谢。

4

3 回答 3

7

是的。很容易发现,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)。通过类比众所周知的 * 优先于 + 的规则,这就解释了为什么逻辑运算符应该以这种方式计算。

于 2013-01-31T16:02:07.443 回答
5

Oracle 教程中所述,运算符 &&的优先级高于||

注意:&优先级高于|which 高于&&then||

同等优先级的运算符从左到右求值(赋值运算符除外)。eg与 order1 + 2 + "3"不一样。1 + (2 + "3")相似地100 / 10 / 2 != 100 / (10 / 2)

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

于 2013-01-31T15:59:00.817 回答
2

的,根据文档&&优先于||(除非您使用括号)。

于 2013-01-31T15:59:33.497 回答