Wtat的意思是“ ^ =”吗?
我在Java中有很长的比较需要做,我想知道其中是否有一个或多个是正确的。比较字符串很长且难以阅读,因此为了便于阅读,我对其进行了分解,并自动使用快捷方式运算符|=
而不是negativeValue
= negativeValue || boolean。
boolean negativeValue = false;negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
negativeValue
如果任何默认
同样,如果我想执行多个逻辑交集,是否可以使用&=
代替&&
?
回答:
的|=
是这样的化合物赋值运算符(JLS
15.26.2为布尔逻辑运算符)|
(JLS
15.22.2);
不要与条件或混淆||
(JLS
15.24)。也有&=
与^=
对应于所述化合物分配版本布尔逻辑&
和^
分别。
换句话说,对于boolean b1, b2
,这两个是等效的:
b1 |= b2; b1 = b1 | b2;
(逻辑运算符之间的差异&
和|
)相比,他们的条件同行(&&
和||
)之处在于前者不“短路”; 后者可以。那是:
&
并|
始终 评估两个操作数&&
并 有条件地||
评估正确的操作数; 仅当右操作数的值可能影响二进制运算的结果时,才对右操作数进行求值。这意味着在以下情况下不会评估正确的操作数: __- 的左操作数
&&
计算为false
- (因为无论正确的操作数求值是什么,整个表达式都是
false
) - 的左操作数
||
计算为true
- (因为无论正确的操作数求值是什么,整个表达式都是
true
)
- 的左操作数
所以回到你原来的问题,是的,结构是有效的,虽然|=
是不完全的等价快捷=
和||
,这你想要做什么的计算。由于|=
您使用的运算符的右侧是一个简单的整数比较运算,因此|
不会短路的事实微不足道。
在某些情况下,需要短路甚至是短路时,但您的情况并非其中之一。
不幸的是,与某些其他语言不同,Java没有&&=
and ||=
。问题 Java为什么不为条件和和条件或运算符提供复合赋值版本? (&& =,||
=)。
以上是 Wtat的意思是“ ^ =”吗? 的全部内容, 来源链接: utcz.com/qa/413356.html