逻辑OR运算符与按位OR运算符

时间:2010-09-13 08:13:08

标签: java

有谁知道原因:

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");
    }

打印“错误

2 个答案:

答案 0 :(得分:20)

在第一种情况下&&优先级高于||运算符,因此表达式被计算为if ( (false && true) || true ),并且您得到True。

在第二种情况下,按位OR运算符的优先级高于&&所以表达式被评估为if ( false && ( true | true ) ),你得到假。

答案 1 :(得分:16)

因为operator precedence。在第一个示例中,首先执行&&,然后执行||。但是按位OR具有更高的优先级,因此在第二个示例中,首先执行|,然后执行&&