我在Java中有很长的比较需要做,我想知道其中是否有一个或多个是正确的。比较字符串很长且难以阅读,因此为了便于阅读,我对其进行了分解,并自动使用快捷方式运算符|=而不是negativeValue = negativeValue || boolean。
|=
negativeValue = negativeValue || boolean
boolean negativeValue = false; negativeValue |= (defaultStock < 0); negativeValue |= (defaultWholesale < 0); negativeValue |= (defaultRetail < 0); negativeValue |= (defaultDelivery < 0);
negativeValue如果任何默认值为负,我希望是真实的。这有效吗?会满足我的期望吗?我在Sun的网站或stackoverflow上看不到它,但是Eclipse似乎没有问题,并且代码可以编译并运行。
negativeValue
同样,如果我想执行多个逻辑交集,是否可以使用&=代替&&?
&=
&&
的|=是这样的化合物赋值运算符(JLS 15.26.2为布尔逻辑运算符)|(JLS 15.22.2); 不要与条件或混淆||(JLS 15.24)。也有&=与^=对应于所述化合物分配版本布尔逻辑&和^分别。
|
||
^=
&
^
换句话说,对于boolean b1, b2,这两个是等效的:
boolean b1, b2
b1 |= b2; b1 = b1 | b2;
(逻辑运算符之间的差异&和|)相比,他们的条件同行(&&和||)之处在于前者不“短路”; 后者可以。那是:
false
true
所以回到你原来的问题,是的,结构是有效的,虽然|=是不完全的等价快捷=和||,这你想要做什么的计算。由于|=您使用的运算符的右侧是一个简单的整数比较运算,因此|不会短路的事实微不足道。
=
在某些情况下,需要短路甚至是短路时,但您的情况并非其中之一。
不幸的是,与某些其他语言不同,Java没有&&=and ||=。问题 Java为什么不为条件和和条件或运算符提供复合赋值版本? (&& =,|| =)。
&&=
||=