通过异或运算不需要任何中间变量交换即可实现数, 如下:
public void swap(int a, int b) {
a ^= b;
b ^= a;
a ^= b;
}
但是当两个数值相同时,则变成了:
a ^= a;
a ^= a;
a ^= a;
结果输出a为0,这是我们不想看到的
改进如下:
public void swap(int a, int b) {
if (a == b) {
return;
}
a ^= b;
b ^= a;
a ^= b;
}