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

d1c*_*50n 17 java

有谁知道原因:

if (false && true || true) {
       System.out.println("True");
} else {
      System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)

打印" 真实 "

if (false && true | true) {
           System.out.println("True");
    } else {
          System.out.println("False");
    }
Run Code Online (Sandbox Code Playgroud)

打印" "

Fai*_*roz 21

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

在第二种情况下,按位OR运算符的优先级高于&&所以表达式的计算结果为,if ( false && ( true | true ) )并且得到False.


T.J*_*der 17

由于运算符优先级.在你的第一个例子中,首先&&完成,然后是||.但是按位OR具有更高的优先级,所以在你的第二个例子中|首先完成,然后是&&.

  • downvoter会关心提供一些有用的反馈吗? (4认同)