I’m just wondering why we usually use logical OR || between two booleans not bitwise OR |, though they are both working well.
I mean, look at the following:
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
Can we use | instead of ||? Same thing with & and &&.
If you use the
||and&&forms, rather than the|and&forms of these operators, Java will not bother to evaluate the right-hand operand alone.It’s a matter of if you want to short-circuit the evaluation or not — most of the time you want to.
A good way to illustrate the benefits of short-circuiting would be to consider the following example.
Another benefit, as Jeremy and Peter mentioned, for short-circuiting is the null reference check:
more info