2013-01-05 65 views
-8

假設我們使用操作,使得&&和||如何短路?在java中工作?

if (a.enable() && b.enable()) 

所以上面的語句表明,無論是報表必須真實進行

怎麼樣的情況下,如果a.enable()返回false,如果我們寫聲明這樣

if (a.enable() && (b.enable() || c.enable())) 

所以這上面的語句意味着a.enable()需求是真實的,並從山高nd部分b.enable()c.enable()需要爲真。它們中的任何一個都需要是真的才能繼續,但是如果a.enable()不是真的,那麼在沒有進一步檢查的情況下該條件失敗。

這是正確的嗎?

+11

你可以試試它... –

+0

是的它是正確的 – Subin

+2

邏輯運算符。可能在任何編程語言書的第一章。太麻煩太查看它? – asgoth

回答

7

是,&&表示AND||表示OR。而且他們都短路,所以在下面的情況:

if (a.enable() && b.enable()) 

b.enable()甚至不會叫,如果a.enable()返回false。

而在下面的情況:

if (a.enable() || b.enable()) 

b.enable()甚至不會被稱爲AF a.enable()返回true。

那是什麼讓像

if (s != null && s.equals(foo)) 

條件,這將導致一個NullPointerException如果操作員沒有短路。

+0

非常感謝,它對理解有很大的幫助。 – user1924563

+0

+1爲'NullPointerException' – Bhushan

-1
if (a.enable() && b.enable()) 

第二屆條件將被稱爲只有在第一個條件是真實的。

+0

歡迎來到SO。請考慮解釋您的代碼如何工作並格式化您的答案。正如所寫,你的答案似乎是胡言亂語。 –

+0

@RichardErickson即使你寫這些,也不是這樣。這不是「胡言亂語」;海報只是沒有用代碼塊格式化或使用完美的英文。 –

+0

@RichardErickson你爲什麼認爲我的回答是胡言亂語。 – Sasanka