如果使用||
和&&
形式,而不是这些运算符的|
和&
形式,则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()
}