我认为在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(|)?他们如何定义优先权?
答案 0 :(得分:1)
由于&
的优先级高于^
,因此^
的优先级高于|
。
答案 1 :(得分:1)
在Java中,按位运算符具有不同的优先级,如Java规范所定义:
这些[bitwise]运算符具有不同的优先级,&拥有最高的 优先级和|最低优先级。
所以&
出现在^
之前,而^
出现在|
之前。