位运算符对Java中布尔值的影响

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (103)

按位运算符应该传送变量并对其进行一点一点的操作。在整数,长整数的情况下,这是有道理的。这些变量可以包含由其大小强制执行的全部范围的值。

然而,在布尔值的情况下,布尔值只能包含两个值。1 =真或0 =假。但是布尔的大小没有定义。它可以像字节一样大或稍小一点。

那么在布尔值上使用按位运算符有什么作用?JVM是否将其转化为正常的逻辑运算符并继续前进?为了操作的目的,是否将布尔值视为单个位实体?或者是结果与布尔值的大小一起未定义?

提问于
用户回答回答于

运算符&,^和| 是操作数是原始整数类型时的按位运算符。当操作数是布尔值时,它们是逻辑运算符,并指定它们在后一种情况下的行为。有关详细信息,请参阅Java语言规范的第15.22.2节。

用户回答回答于

使用按位运算符可以避免短路行为:

boolean b = booleanExpression1() && booleanExpression2();
boolean b = booleanExpression1() & booleanExpression2();

如果booleanExpression1()评估为false,然后

booleanExpression2()在第一种情况下不进行评估,并且

booleanExpression2()(无论有什么副作用)在第二个案例中,

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励