我只是想知道为什么我们通常||在两个布尔之间使用逻辑OR 而不是按位OR |,尽管它们都运行良好。
||
OR
OR |
我的意思是,请看以下内容:
if(true | true) // pass if(true | false) // pass if(false | true) // pass if(false | false) // no pass if(true || true) // pass if(true || false) // pass if(false || true) // pass if(false || false) // no pass
| | 我们可以|代替使用||吗?与&和相同&&。
如果使用||和&&形式,而不是这些运算符的|和&形式,则Java不会费心地单独评估右手操作数。
&&
|
&
多数情况下,是否要缩短评估是一个问题。
说明短路好处的一个好方法是考虑以下示例。
Boolean b = true; if(b || foo.timeConsumingCall()) { //we entered without calling timeConsumingCall() }
正如Jeremy和Peter提到的,短路的另一个好处是空引用检查:
if(string != null && string.isEmpty()) { //we check for string being null before calling isEmpty() }