package com.yushifu.operator;
//不用第三个辅助变量,实现两个数的交换
public class Demo08 {
//方法一
public static void exchange_01(double a, double b){
a = a+b;
b = a-b;
a = a-b;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("----------------------------------------------------");
}
public static void exchange_02(double a,double b){
//方法二 数组
double[] m = {a,b};
a = m[1];
b = m[0];
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("----------------------------------------------------");
}
public static void exchange_03(int a,int b){
//方法三 异或(二进制,只能用于交换整数,浮点数不可) 核心思想是 0^x = x 同0异1
a = a^b;//(1)
b = a^b;//(2)在(1)的作用下,等价于b=a^b^b——>因为b^b=0,且0^x=x,这就实现了将a赋值给b
a = a^b;//(3)a=a^b^b——>注意此式中第一个b的值为原来的b,第二个b则通过(2)变成了a,
// 即(3)等价于a=a^原b^a,等价于a=0^原b,即实现了b值赋给a
System.out.println("a="+a);
System.out.println("b="+b);
}
public static void main(String[] args) {
exchange_01(900,3000);
exchange_02(3.2,6.8);
exchange_03(336,554);
}
}
运行结果:

Tpis:
异或的性质: