&=运算符是Java中的短路运算符吗?
Is the &= operator a short circuit operator in Java?
在Java中,&&
和||
短路。因此,如果没有必要,它们不会计算第二个操作数(例如 false && a
、true || 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
在Java中,&&
和||
短路。因此,如果没有必要,它们不会计算第二个操作数(例如 false && a
、true || 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