我發現了一個程序,我在看,有人可以解釋什麼是怎麼回事這個代碼片斷?是什麼目的「返回了methodA()||的methodB()」中的Java
return methodA() || methodB();
和了methodA最終的methodB返回布爾值。這是某種異常的保護或將這種說法總是返回了methodA()?
我發現了一個程序,我在看,有人可以解釋什麼是怎麼回事這個代碼片斷?是什麼目的「返回了methodA()||的methodB()」中的Java
return methodA() || methodB();
和了methodA最終的methodB返回布爾值。這是某種異常的保護或將這種說法總是返回了methodA()?
它調用methodA
和檢查結果。如果爲true,則立即返回true。否則,它調用methodB
並返回。
無論如何,這就是所謂的短路操作。我建議你學習更多一點關於Java的運營商,因爲你可能會看到這樣的東西很多。
如果短路行爲不理想,他們可以使用
return methodA() | methodB();
它將調用這兩種方法後,對結果的按位或(這相當於邏輯或布爾值),並返回結果。
這意味着如果methodA
返回true
那麼使用它作爲返回值,否則使用返回值methodB
。一種級聯評估的返回值。
它縮短下面的形式:
boolean a = methodA();
boolean b = methodB();
if(a) {
return true;
}
else if(b) {
return true;
}
else {
return false;
}
如果methodA()
返回true,則的methodB()不會被調用,真正的將被退回。如果MethodA()
返回false,則將調用methodB()
將其值返回。
谷歌很難找到。這段代碼和OP中的代碼之間存在語義上的區別;這段代碼總是調用'methodB'。 – gustafc 2013-02-25 15:45:18
請參閱我的示例代碼下面的文本。它已經被提及。我試圖用明確的變量和易讀性來解釋。 – 2013-02-25 17:25:06
謝謝你,非常豐富的答案,這對於 – SMC 2013-02-25 15:34:32