java条件运算符,为什么下面的代码输出为true?

Har*_*ard 4 java conditional-operator

class test {
    public static void main (String[] args) {
        boolean a = false;
        boolean b = true;

        if (a && a || b) {
            System.out.println(true);
        }
    }
} //--why it always true????o/p is true but why??
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 7

运作顺序.

&&的优先级高于||并因此被评估第一.您的if病情可以改写如下:

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

这种情况将永远是false || true它总是true为你列出的条件.

点击此处查看Oracle的官方表格,其中列出了所有运营商的优先顺序.

  • 因为`&&`vs` ||`的优先级经常被误解,所以在混合`&&`和`||`时总是*使用显式括号是个好主意.这样它永远不会出错. (2认同)