&=运算符是Java中的短路运算符吗?

Is the &= operator a short circuit operator in Java?

在Java中,&&||短路。因此,如果没有必要,它们不会计算第二个操作数(例如 false && atrue || b)。

&= 运算符呢?也是短路吗?

不,不是。

前段时间有一个话题讨论为什么 &&= 运算符不存在。如果它有意义的话,那可能是一个短路运算符。

不,&= 不是布尔运算符,因此它不会短路任何东西,它是按位赋值运算符。

它本质上意味着用第一个和第二个操作数的按位 & 分配第一个操作数。

快速演示

int i = 01;
int ii = 10;
System.out.println(i &= ii); // assigns i with i & ii and sends i to print stream
i = 01;
ii = 11;
System.out.println(i &= ii);

输出

0
1