按位运算符的优先级是什么(& | ^〜)

时间:2013-11-19 23:10:17

标签: java bit-manipulation operator-precedence

我认为在java中,所有逐位运算符都具有相同的优先级。然而实际上,逐位运算符AND(&)具有比逐位运算符OR(|)更高的优先级。请参阅以下计划:

公共类HelloWorld {

public static void main(String[] args) {

    int a = 1 | 2 ^ 3 & 5;
    int b = ((1 | 2) ^ 3) & 5;
    int c = 1 | (2 ^ (3 & 5));

    System.out.print(a + "," + b + "," + c);
}

}

上述程序的结果是3,0,3。 所以它也证明了XOR(^)具有更高的优先级。根据上述结果的结果,有人可以解释为什么XOR(^)的优先级高于OR(|)?他们如何定义优先权?

2 个答案:

答案 0 :(得分:1)

由于&的优先级高于^,因此^的优先级高于|

Look at oracle's java tutorial

答案 1 :(得分:1)

在Java中,按位运算符具有不同的优先级,如Java规范所定义:

  

这些[bitwise]运算符具有不同的优先级,&拥有最高的   优先级和|最低优先级。

所以&出现在^之前,而^出现在|之前。