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

布尔运算符的不同之处:&VS&和x-vsx

布尔运算符的不同之处:&VS&和x-vsx

月关宝盒 2019-07-27 15:15:10
布尔运算符的不同之处:&VS&和x-vsx我知道&&和||但是什么是&和|?请用一个例子向我解释一下。
查看完整描述

3 回答

?
DIEA

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

这些是按位和按位或运算符。


int a = 6; // 110

int b = 4; // 100


// Bitwise AND    


int c = a & b;

//   110

// & 100

// -----

//   100


// Bitwise OR


int d = a | b;

//   110

// | 100

// -----

//   110


System.out.println(c); // 4

System.out.println(d); // 6

感谢Carlos指出Java语言规范中的适当部分(15.22.115.22.2)根据运算符输入的不同行为。


实际上,当两个输入都是布尔值时,运算符被认为是布尔逻辑运算符,并且行为类似于条件-和(&&)和有条件的-或(||)操作人员,除非他们没有短路,所以在下列情况下是安全的:


if((a != null) && (a.something == 3)){

}

这不是:


if((a != null) & (a.something == 3)){

}

“短路”是指操作人员不一定检查所有条件。在上面的例子中,&&只在下列情况下才会检查第二个条件:a不是null(否则,整个语句将返回false,并且无论如何检查以下条件都是没有意义的),所以a.something不会引发异常,或被视为“安全”。


这个&运算符总是检查子句中的每个条件,所以在上面的例子中,a.something可能会在a实际上是null值,引发异常。




查看完整回答
反对 回复 2019-07-28
?
当年话下

TA贡献1890条经验 获得超9个赞

我想你说的是这两个操作符的逻辑含义,这里有一个表格-简历:

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-07-28
  • 3 回答
  • 0 关注
  • 391 浏览

添加回答

举报

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