可能是重复的问题:
为什么Java没有条件与和条件或运算符的复合赋值版本?(&&=, ||=)
为什么不存在“&&=”运算符?
今天在工作中,我写了以下代码(b和b1的真实身份是保密的 :)
b &&= b1; // meaning b = b && b1;
我盯着它看了几秒钟,意识到没有这样的运算符。为了确保,我点击了编译,但失败了。为了更加确定,我查阅了标准。
为什么没有这样的运算符?我可以想到一些原因:
b &&= b1
和b = b && b1
可能不等价,因为&&有短路求值。- &&= 很丑陋。
- &&= 很少使用。
我并不认为拥有这样的运算符非常有用。我也不认为以上三个理由中的任何一个或全部都不足以制止创建该运算符。我的问题是:是否存在我忽略的更严重的原因?
b &= isSomethingWithSideEffects();
会运行函数,而如果它被改成&&=
,假设 b 是 false 的话,那么函数就不会被运行了,对吗? - Dusty&=
等同于&&=
(正如我的评论所述)。 - Dustyb
和b1
的真实身份秘密会赋予我怎样无法估量的力量! - Michael Burr