java 或 与 短路_Java的逻辑“与” VS“或”短路一致性

我读过一些教程,并回答关于java和我短路操作我仍然不完全理解java处理双垂直管道短路的方式与双和号的区别。例如...

为什么逻辑与短路评估失败?

引用JSL 15.23。有条件与操作员& &

The conditional-and operator && is like & (§15.22.2), but evaluates its right-hand operand only if the value of its left-hand operand is true.

public static void main(String... args) {

int a = 1;

int b = 2;

// Okay. Prints

if(a == 1 | b == 3) {

System.out.println("Comparison via |" + "\na is " + a + "\nb is " + b);

}

// Okay. Prints

if(a == 1 || b == 3) {

System.out.println("Comparison via ||" + "\na is " + a + "\nb is " + b);

}

// Okay. Does not print

if(a == 1 & b == 3) {

System.out.println("Comparison via &" + "\na is " + a + "\nb is " + b);

}

// I don't understand. Shouldn't the Short Circuit succeed since the left side of the equation equals 1?

if(a == 1 && b == 3) {

System.out.println("Comparison via &&" + "\na is " + a + "\nb is " + b);

}

}

2012-11-16

Eddie B

+3

'|'和'&'是按位或/和运算符;它们不同于'||'和'&&',它们是逻辑或/和运算符。 –

+0

我知道我没有得到第四名,但是......我迷失在那里:-) –

+0

@NullUserException:他们在短路方面有所不同 - 但JLS在另一方面定义了一个。 ..看到我的答案。 (注意对于'boolean'操作数,它们仍然是逻辑运算符...) –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值