java 的 非短路,java – 非短路逻辑运算符的原因

更新答案:

道歉,我错过了你的问题中的“逻辑”一词,即使它在那里。 (我自由地强调了一点编辑。)

考虑您希望任何副作用始终发生的情况,无论左侧表达式是否为true或false。对比:

if (foo() & bar()) {

// Only call this if both operations returned true

}

if (foo() && bar()) {

// Only call this if both operations returned true

}

假设foo和bar都有我们想要发生的效果,无论foo是返回true还是false。在上面的第一个,我知道酒吧将永远得到呼吁并产生影响。在后者当然,酒吧可能也可能不会叫。如果我们没有非短路版本,我们必须使用临时变量:

boolean fooResult, barResult;

fooResult = foo();

barResult = bar();

if (fooResult && barResult) {

// ...

}

你可能会(我可能会)认为,你应该这样做,因为如果(foo()& bar())太容易误解,但是我们走了,这是一个非短路版本的务实原因。

原始答案:

你会如何提出& (或|)是短路运算符?与&&和||,它是有道理的,因为你处理布尔条件:它们可以是真或假,没有灰色阴影。但&和|处理位,而不是布尔。结果是一个数字。我的意思是,我猜如果左侧为0,则不能对右侧进行评估无论如何,无论何种类型的左侧都是全部位,不能评估它,但是我并没有看到使每个运算符的边缘情况显着(与254或更多其他情况相比) )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值