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

在Java中&和&之间有什么区别?

在Java中&和&之间有什么区别?

慕姐8265434 2019-08-03 07:03:13
在Java中&和&之间有什么区别?我一直以为&&操作符在Java中用于验证其布尔操作数是否都是true,以及&运算符用于对两种整数类型进行逐位操作.最近我知道&运算符也可用于验证其布尔操作数是否都是true唯一的区别是,即使LHS操作数是假的,它也会检查RHS操作数。是&操作符在Java内部重载?或者这背后还有其他的概念?
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

&<-验证两个操作数
&如果第一个操作数计算为false,则停止计算,因为结果将为false。

(x != 0) & (1/x > 1) <-- this means evaluate (x != 0)然后评估(1/x > 1)那就去做。问题是,对于x=0,这将引发异常。

(x != 0) && (1/x > 1) <-- this means evaluate (x != 0)只有当这是真的,然后评估(1/x > 1)因此,如果有x=0,那么这是完全安全的,如果(x!=0)计算结果为false,则不会抛出任何异常。(1/x > 1).

编辑:

exprA | exprB <-- this means evaluate exprA然后评估exprB然后做|.

exprA || exprB <-- this means evaluate exprA如果这是false然后评估exprB然后做||.




查看完整回答
反对 回复 2019-08-05
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

除了通过计算两个操作数而不是懒惰的计算器之外,我认为按位运算符的主要特性是比较每个操作数的字节,如下面的示例所示:

int a = 4;

int b = 7;

System.out.println(a & b); // prints 4

//meaning in an 32 bit system

// 00000000 00000000 00000000 00000100

// 00000000 00000000 00000000 00000111

// ===================================

// 00000000 00000000 00000000 00000100



查看完整回答
反对 回复 2019-08-05
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

boolean a, b;Operation     Meaning                       Note---------     -------                       ----
   a && b     logical AND                    short-circuiting
   a || b     logical OR                     short-circuiting
   a &  b     boolean logical AND            not short-circuiting
   a |  b     boolean logical OR             not short-circuiting
   a ^  b     boolean logical exclusive OR  !a          logical NOTshort-circuiting        (x != 0) && (1/x > 1)   SAFE
not short-circuiting    (x != 0) &  (1/x > 1)   NOT SAFE




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

添加回答

举报

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