有谁知道原因:
if (false && true || true) {
System.out.println("True");
} else {
System.out.println("False");
}
打印“真实”
if (false && true | true) {
System.out.println("True");
} else {
System.out.println("False");
}
打印“错误”
答案 0 :(得分:20)
在第一种情况下&&优先级高于||运算符,因此表达式被计算为if ( (false && true) || true )
,并且您得到True。
在第二种情况下,按位OR运算符的优先级高于&&所以表达式被评估为if ( false && ( true | true ) )
,你得到假。
答案 1 :(得分:16)
因为operator precedence。在第一个示例中,首先执行&&
,然后执行||
。但是按位OR具有更高的优先级,因此在第二个示例中,首先执行|
,然后执行&&
。