我知道规则&&
and ||
但什么是&
and |
?请用例子向我解释这些。
这些是按位 AND 和按位 OR 运算符。
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.1 https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.22.1, 15.22.2 https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.22.2)关于操作员基于其输入的不同行为。
事实上,当两个输入都是布尔值时,运算符被视为布尔逻辑运算符,其行为类似于条件与 (&&
) 和条件或 (||
) 运算符,除了它们不会短路这一事实,因此虽然以下是安全的:
if((a != null) && (a.something == 3)){
}
这不是:
if((a != null) & (a.something == 3)){
}
“短路”意味着操作员不必检查所有情况。在上面的例子中,&&
仅当以下情况时才会检查第二个条件a
is not null
(否则整个语句将返回 false,并且无论如何检查以下条件都是没有意义的),所以语句a.something
不会引发异常,或者被认为是“安全的”。
The &
运算符始终检查子句中的每个条件,因此在上面的示例中,a.something
可以在以下情况下进行评估:a
实际上是一个null
值,引发异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)