&= 与运算符
a &= b; 等同于 a = a & b;
有0为0,否则为1。
0 & 0 = 0;
1 & 1 = 1;
1 & 0 = 0;
|= 或运算符
a |= b; 等同于 a = a | b;
有1为1,否则为0。
0 | 0 = 0;
1 | 1 = 1;
1 | 0 = 1;
^= 异运算符
a ^= b; 等同于 a = a ^ b;
相同为0,不同为1。
0 ^ 0 = 0;
1 ^ 1 = 0;
1 ^ 0 = 1;
特性
a ^ 0 = a;
a ^ a = 0;
不使用第三个变量,实现两个值类型变量交换值
public static void main(String[] args) {
int a = 5;
int b = 20;
a ^= b;
b ^= a;
a ^= b;
System.out.println(a);
System.out.println(b);
}
实现类似于抽乌龟的功能
定义一个整数数组,该数组有且仅有一个数字单独存在,其他数字都是成对存在,通过异运算可以快速找出单独存在的那个数字
public class TheNumberThatAppearsOnlyOnceTest {
public static void main(String[] args) {
int[] nums = new int[]{4,1,2,1,2};
System.out.println(singleNumber(nums));
}
private static int singleNumber(int[] nums) {
int result = 0;
for (int num : nums) {
result ^= num;
}
return result;
}
}