從凱茜塞拉利昂書上找到OCA/OCP Java SE 7級中的程序員我& II學習指南瞭解這個以下布爾表達式:需要幫助的if語句
int x = 2;
int y = 5;
if ((x > 3) && (y < 2) | doStuff()) {
System.out.println("true");
}
這現在打印...什麼都沒有!因爲前面的代碼(少一個 括號)評估就好像你在說,「如果(x> 3) 不是真的,並且或者(y < 2)或doStuff()的結果爲真, 那麼如果(x> 3)不是真的,那麼沒有觀察表達式的其餘部分「因爲短路& &, 表達式被評估爲好像圍繞着括號(y < 2)|做東西()。
在我的理解中,運營商&&
和||
具有相同的優先順序並從左到右進行評估。因此,在這種情況下,表達式(x > 3) && (y < 2)
仍應首先進行評估。請解釋。
更新:我的錯誤。這確實是一個「|」而不是「||」。
它是二進制還是「|」或者它是真的還是運營商「||」? – Necreaux 2015-02-24 21:35:58
但是&&的優先級低於按位包含的OR。 – jdv 2015-02-24 21:38:36
是的你是對的。你應該回答(而不是評論),那麼我會選擇你的回答。 – user1539343 2015-02-24 22:44:46