Wtat的意思是“ ^ =”吗?

我在Java中有很长的比较需要做,我想知道其中是否有一个或多个是正确的。比较字符串很长且难以阅读,因此为了便于阅读,我对其进行了分解,并自动使用快捷方式运算符|=而不是negativeValue

= negativeValue || boolean

boolean negativeValue = false;

negativeValue |= (defaultStock < 0);

negativeValue |= (defaultWholesale < 0);

negativeValue |= (defaultRetail < 0);

negativeValue |= (defaultDelivery < 0);

negativeValue如果任何默认值为负,我希望是真实的。这有效吗?会满足我的期望吗?我在Sun的网站或stackoverflow上看不到它,但是Eclipse似乎没有问题,并且代码可以编译并运行。


同样,如果我想执行多个逻辑交集,是否可以使用&=代替&&

回答:

|=是这样的化合物赋值运算符(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

回到顶部