为什么我们通常使用`||`不““有什么区别?

问题:

我只是想知道为什么我们通常使用逻辑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

我们可以使用|而不是||吗?与&&&相同的事情

回答:

如果您使用||&&形式,而不是这些运算符的|&形式,Java将不会单独评估右侧的操作数。
是否要短路评估,而不是您想要的时间 – most
说明短路效益的一个好方法是考虑以下示例。

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()
}

 more info

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why do we usually use `||` not `|`, what is the difference?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

54 + = 56