短路运算符给我不同的结果

Qad*_*ain 0 java

在使用短路运算符的&&同时||,我得到了意想不到的结果.

    if(false && false || true) {
        System.out.println("true");
    } else {
        System.out.println("false");
    }
Run Code Online (Sandbox Code Playgroud)

它给了我true但是根据短路规则,如果第一个操作数是false那么就没有必要评估第二个操作数.任何人都可以在我遗漏的地方解释它.

ζ--*_*ζ-- 5

(false && false) || true
Run Code Online (Sandbox Code Playgroud)

首先评估.短路给出false并因此||不能短路,因此被充分评估,


Ian*_*ght 5

我的解释是,因为&&运算符的优先级高于||(根据此表),所以语句被解释为(false && false) || true.

然后评估为false || true,这当然是true.我可能错了,但这似乎正在发生.