正如在Java中思考的那样,如果你有2个布尔对象x
和y
,你可以使用它们x= x&&y
和x=x&y
,那么为什么必要的呢?两种类型?
答案 0 :(得分:12)
两位经营者采取不同的行动:
&
将始终评估两个操作数&&
短路 - 如果第一个操作数的计算结果为false
,那么整体结果将始终为false,并且不会计算第二个操作数< / LI>
有关更多详细信息,请参阅Java语言规范:
答案 1 :(得分: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
1}}无论第二个操作数是什么。
答案 2 :(得分:2)
&
将评估两个操作数&&
将跳过第二个操作数的评估答案 3 :(得分:1)
&安培;是一个按位'和'运算符,&amp;&amp;是一个布尔'和'
&安培;将始终评估左侧和右侧,&amp;&amp;如果足以评估表达式,则仅评估左侧(例如,假&amp;&amp; true:仅评估LHS,因为如果LHS为假,则整个表达式必须为假)