我不知道下面的代碼如何返回false。Java邏輯短路運算符如何工作
String line ="";
if (line.length() > 0 && !line.startsWith("/*") || !line.startsWith("--")) {
return false;
}
我知道,如果我們使用& &是,執行從左側開始和它進行唯一如果離開結果爲真,否則不要繼續。
但在上面的代碼中它返回false。 line.length()
的值爲0,但其驗證的第二個條件並評估爲真,因爲其他兩個條件爲真並返回false。
幫我理解這個操作符。
謝謝。
謝謝你的時間。我所說的是,如果**** line.length()> 0 ****失敗,爲什麼它會驗證其他事情。它應該短路嗎?它不應該驗證其他條件,它應該通過if測試。糾正我,如果我錯了。 – Abdul
@Abdul它確實短路,這就是爲什麼'!line.startsWith(「/ *」)'永遠不會被評估的原因,然而'' !line.startsWith(「 - 」)不是AND運算符的操作數的一部分,因此在AND運算符評估爲false之後,OR將被評估 - '(false ||!line.startsWith(「 - 「 - 」)' - returned true。 – Eran
謝謝,在添加括號後,我明白了。 – Abdul