什么时候应该在 java 中使用单个逻辑运算符?

When should you use single logical operators in java?

开门见山:什么时候使用单一 & 或单一 | 相对于它们的短路 &&|| 变体更好?

我似乎找不到一个更好地评估布尔表达式两边的例子。

正如您所暗示的,您意识到短路运算符 &&|| 与非短路运算符 & 和 [=15= 之间的区别].但是什么时候差异会变得显着呢?当第二个表达式有副作用或者是影响性能的 long-运行 操作时。最简单的副作用示例是发生在 return a boolean 上的方法调用,例如:

if (firstOperation() & secondOperation()) //...

当您需要确保副作用发生时,请不要短路。但是我在实践中并不经常看到它,因为先调用有副作用的方法,然后再评估条件会更清楚,例如:

boolean first = firstOperation();
boolean second = secondOperation();

if (first && second) //...

通常您会看到短路运算符,它们会在不必要时避免计算第二个操作数。当第二个条件没有副作用时,这会派上用场,如果第二个条件涉及大量开销成本,它会变得很重要。