小编典典

为什么我们通常使用|| 结束|?有什么区别?

all

我只是想知道为什么我们通常||在两个布尔值之间使用逻辑 OR 而不是按位 OR |,尽管它们都运行良好。

我的意思是,看看以下内容:

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

我们可以使用|代替||吗?与&和相同&&


阅读 60

收藏
2022-06-02

共1个答案

小编典典

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

更多信息

2022-06-02