&&(逻辑与)运算符的优先级是否高于 || Java 中的(逻辑或)运算符?

问题描述 投票:0回答:1

根据我之前的知识,(逻辑AND)比(逻辑OR)具有更高的优先级,因此例如在以下Java代码行中,

boolExp2 
将与
boolExp3 
进行比较,然后再将
boolExp1 
boolExp2
进行比较:

boolean b = boolExp1 || boolExp2 && boolExp3

等同于:

boolean b = boolExp1 || (boolExp2 && boolExp3)

但是在下面的例子中我不认为这是真的,在下面的代码中我有一个int变量

x
,它等于1,当代码递增
x
时,它在这行代码中:

boolean b = (1<2) || (6<x++) || (++x>9) && (true^false) ^ (x++<7);

这行执行后,变量

x
的值没有改变,这是否与代码中的“短路”有关,我不是这方面的专家,还是有其他原因?

完整的java代码:


public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int x = 1;
        boolean b = (1<2) || (6<x++) || (++x>9) && (true^false) ^ (x++<7);
        
        System.out.println(b);
        System.out.println("x = "+ x);
    }

}

**输出: **

true
x = 1

**期望: **

true
x = 4

请提供详细的代码执行情况。

谢谢。

java operator-precedence control-flow boolean-operations short-circuiting
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.