方法1:通过数学运算中的差值来实现交换
public void changeValue(int a, int b) {
System.out.println("转换前 : a: " + a + " 和 b: " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.println("转换前 : a: " + a + " 和b: " + b);
}
2) 位运算_异或
public void changeValue() {
int a=10,b=12; //a=1010^b=1100;
System.out.println("转换前 : a: " + a + " 和 b: " + b);
a = a ^ b; // a=0110^b=1100;
b = a ^ b; // a=0110^b=1010;
a = a ^ b; // a=1100=12;b=1010;
System.out.println("转换前 : a: " + a + " 和b: " + b);
}
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,
其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。