|=
关于 |= 运算符:
|= 运算符 处理方式如同 += 这一类的运算符,拆解开就是 a = a | b;
代码如下:
int a = 5; // 0000 0101
int b = 3; // 0000 0011
a |= b; // 0000 0111
// 具体规则
// 两个二进制对应位为0时该位为0,否则为1
&=
&= 和 |= 基本是一样的,只不过对于比较同位方式不同
int a = 5; // 0000 0101
int b = 3; // 0000 0011
a |= b; // 0000 0001
// 具体规则
// 两个二进制对应位都为1时则为1,否则为0
^=
^= 和 |= 基本是一样的,只不过对于比较同位方式不同
int a = 5; // 0000 0101
int b = 3; // 0000 0011
a |= b; // 0000 0110
// 具体规则
// 两个二进制的对应位相同,结果为0则为0,否则为1
总结:
|=:两个二进制对应位都为0时,结果等于0,否则结果等于1;
&=:两个二进制的对应位都为1时,结果为1,否则结果等于0;
^=:两个二进制的对应位相同,结果为0,否则结果为1。
& 和 | 都是位运算符
& 按位与
3&5则
0011
&0101
0001
// &同为1时为1,否则为0
| 按位或
3|5则
0011
|0101
0111
// 同为0时为0,否则为1
注意: 逻辑运算符( || ),均为短路运算符, 满足第一个条件,则第二个条件不会在执行
int x, y = 10;
if((x = 0) == 0 || (y=20) == 20) {
System.out.println("x = " + x + ",y = " + y);
// 输出 x = 0, y = 10
}