3 回答
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
实际上,当两个输入都是布尔值时,运算符被认为是布尔逻辑运算符,并且行为类似于条件-和(&&)和有条件的-或(||)操作人员,除非他们没有短路,所以在下列情况下是安全的:
if((a != null) && (a.something == 3)){
}
这不是:
if((a != null) & (a.something == 3)){
}
“短路”是指操作人员不一定检查所有条件。在上面的例子中,&&只在下列情况下才会检查第二个条件:a不是null(否则,整个语句将返回false,并且无论如何检查以下条件都是没有意义的),所以a.something不会引发异常,或被视为“安全”。
这个&运算符总是检查子句中的每个条件,所以在上面的例子中,a.something可能会在a实际上是null值,引发异常。
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
添加回答
举报