为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们通常使用“\”?

为什么我们通常使用“\”?

蛊毒传说 2019-08-03 14:03:57
为什么我们通常使用“\”?我只是想知道为什么我们通常使用逻辑或||在两个不按位或不按位的布尔人之间|虽然他们俩都工作得很好。我是说,看看下面这些:if(true  | true)  // passif(true  | false) // passif(false | true)  // passif(false | false) // no passif(true  || true)  // passif(true  || false) // passif(false || true)  // passif(false || false) // no pass我们能用吗|而不是||?同事&和&&.
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

如果您使用||&&表单,而不是|&这些操作符的形式,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()}

更多信息



查看完整回答
反对 回复 2019-08-05
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

| 不做布尔表达式中的短路计算。||将停止计算第一个操作数是否为真,但是|不会的。

此外,|可用于对字节/短/int/长值执行按位-OR操作。||不能。


查看完整回答
反对 回复 2019-08-05
?
MM们

TA贡献1886条经验 获得超2个赞

因此,为了在其他答案的基础上举一个例子,短路在以下防御检查中至关重要:

if (foo == null || foo.isClosed()) {
    return;}if (bar != null && bar.isBlue()) {
    foo.doSomething();}

使用|&相反,可能会导致NullPointerException被扔在这里。



查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信