AND优先于OR吗?

use*_*675 1 java

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

if(statement1 && statement2 || statement3)
Run Code Online (Sandbox Code Playgroud)

这是一样的吗?

if(statement1 && (statement2 || statement3))
Run Code Online (Sandbox Code Playgroud)

要么

if((statement1 && statement2) || statement3)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

us2*_*012 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).通过与众所周知的规则*类比优先于+,这就解释了为什么逻辑运算符应该以这种方式进行评估.


Pet*_*rey 5

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

注:&优先级高于|其高于&&||

从左到右评估具有相同优先级的运算符(赋值运算符除外).例如与订单1 + 2 + "3"不一样1 + (2 + "3")重要.同样100 / 10 / 2 != 100 / (10 / 2)

对于赋值运算符a *= b += 5是相同的a *= (b += 5)

  • @DuncanJones在相关的说明; 如果您不确定订单是什么,或者您认为任何阅读它的人可能不确定,请使用()表明清单. (2认同)