快速問題。在Java中,AND的優先級高於OR的?例如,這個代碼是如何解釋的?AND優先於OR嗎?
if(statement1 && statement2 || statement3)
這是本一樣的?
if(statement1 && (statement2 || statement3))
或
if((statement1 && statement2) || statement3)
在此先感謝。
快速問題。在Java中,AND的優先級高於OR的?例如,這個代碼是如何解釋的?AND優先於OR嗎?
if(statement1 && statement2 || statement3)
這是本一樣的?
if(statement1 && (statement2 || statement3))
或
if((statement1 && statement2) || statement3)
在此先感謝。
如Oracle tutorial for operators&&
表示具有高的優先級比||
注:&
的優先級高於|
,高於&&
然後||
相同的優先級的操作符是從左向右(除對於賦值運算符)。例如由於訂單很重要,因此1 + 2 + "3"
與1 + (2 + "3")
不一樣。同樣100/10/2 != 100/(10/2)
對於賦值運算符a *= b += 5
相同a *= (b += 5)
首先評估括號的內容。因此,問題中的大部分示例都是無關緊要的,因爲AND並不直接與或。 –
@DuncanJones在相關說明上;如果您不確定訂單是什麼,或者您認爲閱讀它的人可能不確定,請使用()將其清除。 –
我們應該在路上參加這個節目...:-) –
是,according to the documentation,&&
優先||
(除非你用括號內)。
是的。這是很容易發現,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)
。通過類似於*優先於+的衆所周知的規則,這解釋了爲什麼邏輯運算符應該以這種方式進行評估。
我真的認爲這可能是自己測試或研究! –
這是通過[2秒Google](https://www.google.co.uk/search?q=java+and+or+precedence)回答的。 –
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html – kosa