快速提问。在 Java 中,AND 优先于 OR 吗?例如,如何解释这段代码?
if(statement1 && statement2 || statement3)
这和哪个一样?
if(statement1 && (statement2 || statement3))
或者
if((statement1 && statement2) || statement3)
提前致谢。
快速提问。在 Java 中,AND 优先于 OR 吗?例如,如何解释这段代码?
if(statement1 && statement2 || statement3)
这和哪个一样?
if(statement1 && (statement2 || statement3))
或者
if((statement1 && statement2) || statement3)
提前致谢。
是的。很容易发现,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)
。通过类比众所周知的 * 优先于 + 的规则,这就解释了为什么逻辑运算符应该以这种方式计算。
如Oracle 教程中所述,运算符 &&
的优先级高于||
注意:&
优先级高于|
which 高于&&
then||
同等优先级的运算符从左到右求值(赋值运算符除外)。eg与 order1 + 2 + "3"
不一样。1 + (2 + "3")
相似地100 / 10 / 2 != 100 / (10 / 2)
对于赋值运算符a *= b += 5
与a *= (b += 5)
是的,根据文档,&&
优先于||
(除非您使用括号)。