逻辑运算符处理布尔值,按位运算符处理位。在这种情况下,效果将是相同的,但有两个区别:
- 按位运算符不是为此而设的,这使得阅读变得更加困难,但最重要的是
- 逻辑 OR 运算符将计算第一个条件。如果为真,则下一个条件的结果无关紧要,结果将为真,因此不执行第二个子句
这里有一些方便的代码来证明这一点:
public class OperatorTest {
public static void main(String[] args){
System.out.println("Logical Operator:");
if(sayAndReturn(true, "first") || sayAndReturn(true, "second")){
//doNothing
}
System.out.println("Bitwise Operator:");
if(sayAndReturn(true, "first") | sayAndReturn(true, "second")){
//doNothing
}
}
public static boolean sayAndReturn(boolean ret, String msg){
System.out.println(msg);
return ret;
}
}