Java布尔运算符的区别:&vs &&和| vs ||

我知道for的规则&&||但是&and|什么?请举例说明。

回答:

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

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

感谢卡洛斯指出在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

回到顶部