gpt4 book ai didi

java - boolean 运算符的差异 : & vs && and | vs ||

转载 作者:IT老高 更新时间:2023-10-28 11:27:01 26 4
gpt4 key购买 nike

我知道 &&|| 的规则,但是 &| 是什么?请用一个例子给我解释一下。

最佳答案

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

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)中关于运算符基于其输入的不同行为的适当部分。

确实,当两个输入都是 boolean 值时,运算符被视为 boolean 逻辑运算符,其行为类似于条件与 (&&) 和条件或 (|| ) 运算符,但它们不会短路,因此以下是安全的:

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

这不是:

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

“短路”是指运算符(operator)不必检查所有条件。在上面的例子中,&& 只会在 a 不是 null 时检查第二个条件(否则整个语句将返回 false,它会无论如何都无法检查以下条件),因此 a.something 的语句不会引发异常,或者被认为是“安全的”。

& 运算符始终检查子句中的每个条件,因此在上面的示例中,当 a 为实际上是一个 null 值,引发异常。

关于java - boolean 运算符的差异 : & vs && and | vs ||,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com