我在Java中有一长串比较语句,希望知道其中一个或多个是否为真。由于长且难以阅读,我将其分解以提高可读性,并自动使用了快捷操作符|=
而非negativeValue = negativeValue || boolean
。
boolean negativeValue = false;
negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
如果默认的<something>值中有任何一个是负数,我希望negativeValue
为true。这样做是否有效?它会按照我的期望工作吗?我在Sun的网站或stackoverflow上没有看到相关信息,但是Eclipse似乎没有问题,代码可以编译和运行。
同样地,如果我想要执行多个逻辑交集,我能否使用&=
代替&&
?
||=
操作符是合适的,但是|=
是按位或运算符的组合形式。 - David Thornley|=
短路会与其他复合赋值运算符不一致,因为a |= b;
不等同于a = a | b;
,通常要注意评估a
两次(如果有必要)。在我看来,大的语言行为决策是没有||=
,所以我不明白你的观点。 - David Thornley