直截了当:什么时候使用单&
或单|
比它们的短路&&
和||
变体更好?
我似乎找不到一个示例来更好地评估布尔表达式的两面。
正如你所暗示的,你意识到短路算子&&
和||
与非短路算子&
和|
之间的区别。 但是,这种差异何时会变得显著? 当第二个表达式具有副作用或影响性能的长时间运行的操作时。 副作用最简单的例子是碰巧返回boolean
的方法调用,例如:
if (firstOperation() & secondOperation()) //...
当您需要确保副作用发生时,请不要短路。 但我在实践中并不经常看到它,因为首先调用有副作用的方法,然后评估条件会更清楚,例如:
boolean first = firstOperation();
boolean second = secondOperation();
if (first && second) //...
通常,您会看到短路运算符,如果不需要,它们会避免计算第二个操作数。 当第二个条件没有副作用时,这会派上用场,如果第二个条件涉及大量的间接成本,这可能会变得很重要。