2013-01-31 89 views
0

快速問題。在Java中,AND的優先級高於OR的?例如,這個代碼是如何解釋的?AND優先於OR嗎?

if(statement1 && statement2 || statement3) 

這是本一樣的?

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

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

在此先感謝。

+7

我真的認爲這可能是自己測試或研究! –

+2

這是通過[2秒Google](https://www.google.co.uk/search?q=java+and+or+precedence)回答的。 –

+0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html – kosa

回答

5

Oracle tutorial for operators&&表示具有高的優先級比||

注:&的優先級高於|,高於&&然後||

相同的優先級的操作符是從左向右(除對於賦值運算符)。例如由於訂單很重要,因此1 + 2 + "3"1 + (2 + "3")不一樣。同樣100/10/2 != 100/(10/2)

對於賦值運算符a *= b += 5相同a *= (b += 5)

+1

首先評估括號的內容。因此,問題中的大部分示例都是無關緊要的,因爲AND並不直接與或。 –

+1

@DuncanJones在相關說明上;如果您不確定訂單是什麼,或者您認爲閱讀它的人可能不確定,請使用()將其清除。 –

+1

我們應該在路上參加這個節目...:-) –

4

是的。這是很容易發現,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)。通過類似於*優先於+的衆所周知的規則,這解釋了爲什麼邏輯運算符應該以這種方式進行評估。