当前位置: 首页 > 面试题库 >

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

张宣
2023-03-14
问题内容

我知道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值,产生一个异常。



 类似资料:
  • 概述 布尔运算符用于将表达式转为布尔值,一共包含四个运算符。 取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 取反运算符(!) 取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。 !true // false !false // true 对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都

  • 问题内容: 此方法搜索第一组单词字符(即),返回第一个匹配的组或出现故障的情况。 相同的函数可以重写为: 这是相同的,并且已记录为行为。作为此页中明确指出: 表达式首先计算; 如果为假,则返回其值;否则,将求值并返回结果值。 但是,作为布尔运算符(甚至在手册中也是如此),我希望返回一个布尔值。结果,当我发现这是如何工作时,我感到非常惊讶。 有什么其他用例,和/或这种不太直观的实现的原理是什么? 问

  • 我知道这个问题很简单。但我想知道布尔运算符的字符串格式。例如,下面显示了整数、字符串和浮点数的字符串格式。布尔运算符真/假可能是什么?

  • 问题内容: 按位运算符应该传递变量并对其进行逐位操作。对于整数,longs,char,这是有意义的。这些变量可以包含由其大小强制的所有值范围。 但是,对于布尔值,布尔值只能包含两个值。1 =真或0 =假。但是没有定义布尔值的大小。它可以大或小。 那么在布尔值上使用按位运算符有什么作用?JVM本质上是否将其转换为普通的逻辑运算符并继续运行?是否出于操作目的将布尔值视为单个位实体?还是未定义结果以及布

  • 问题内容: 语言是Java。鉴于这种: 我知道这是一个等效的测试,它将给出结果:true或false。但是,据我所知,with 是一个声明,它在这种情况下应该不返回任何内容:返回true,与test 完全相同? 你能解释为什么吗?谢谢! 问题答案: 计算结果为: 首先,您将文字分配给标识符。然后您在分配后对其进行测试

  • 本文向大家介绍Java运算符>、>>、>>>三者的区别,包括了Java运算符>、>>、>>>三者的区别的使用技巧和注意事项,需要的朋友参考一下 >表示大于,如:if(a>b)...结果是boolean类型 >>表示带符号右移,如:int i=15; i>>2的结果是3,移出的部分将被抛弃。 转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001