ShortCircuitBoolean
Prefer the short-circuiting boolean operators && and || to & and |.

Severity
WARNING
Tags
FragileCode
Has Fix?
REQUIRES_HUMAN_ATTENTION

The problem

The boolean operators && and || should almost always be used instead of & and |.

If the right hand side is an expression that has side effects or is expensive to compute, && and || will short-circuit but & and | will not, which may be surprising or cause slowness.

If evaluating both operands is necessary for side effects, consider refactoring to make that explicit. For example, prefer this:

boolean rhs = hasSideEffects();
if (lhs && rhs) {
  // ...
}

to this:

if (lhs & hasSideEffects()) {
  // ...
}

Suppression

Suppress false positives by adding the suppression annotation @SuppressWarnings("ShortCircuitBoolean") to the enclosing element.