正如在 Java 中的思考中所说,如果你有 2 个布尔对象,x
并且y
你可以在它们上使用任何一个x= x&&y
,x=x&y
那么为什么有必要同时拥有这两种类型呢?
问问题
347 次
4 回答
12
这两个运算符的行为不同:
&
将始终评估两个操作数&&
是短路的- 如果第一个操作数的计算结果为false
,那么总体结果将始终为假,并且第二个操作数不被计算
有关更多详细信息,请参阅 Java 语言规范:
于 2012-11-26T12:49:38.037 回答
3
查看这段代码的输出:
int x = 0;
boolean b = false & (++x == 1); // b is false
System.out.println(x); // prints 1
x = 0;
b = false && (++x == 1); // b is false
System.out.println(x); // prints 0
这是不同的,因为&
总是会计算两个操作数,而&&
如果第一个操作数是,则不会查看第二个操作数,因为无论第二个操作数是什么,false
整个表达式将始终是。false
于 2012-11-26T12:50:18.787 回答
2
&
将评估两个操作数&&
如果第一个操作数为假,将跳过对第二个操作数的评估
于 2012-11-26T12:50:27.710 回答
1
& 是按位 'and' 运算符,&& 是布尔值 'and'
& 将始终评估左侧和右侧, && 仅在足以评估表达式的情况下评估左侧(例如 false && true :仅评估 LHS,因为如果 LHS 为 false,则整个表达式必须为 false)
于 2012-11-26T12:53:35.000 回答