Java布尔运算符的区别:&vs &&和| vs ||
我知道for的规则&&
,||
但是&and
是|
什么?请举例说明。
回答:
这些是按位与和按位或运算符。
int a = 6; // 110int 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
感谢卡洛斯指出在Java语言规范中相应的部分(15.22.1,15.22.2关于基于其输入操作者的不同的行为)。
的确,当两个输入均为布尔值时,这些运算符被视为布尔逻辑运算符,并且其行为类似于Conditional-And(&&)
和Conditional-Or(||)
运算符,但它们不会短路,因此以下操作是安全的:
if((a != null) && (a.something == 3)){}
这不是:
if((a != null) & (a.something == 3)){}
“短路”是指操作员不必检查所有条件。在上述示例中,&&仅在a不存在时检查第二个条件null(否则整个语句将返回false
,无论如何都应检查以下条件),因此的语句a.something不会引发异常,或者被认为是“安全的” 。”
在&
操作者始终检查子句中的每个状态,所以在上述例子中,a.something
也可以当被评估a事实上是一个null
值,产生一个异常。
以上是 Java布尔运算符的区别:&vs &&和| vs || 的全部内容, 来源链接: utcz.com/qa/424163.html