1、我们使用最多的当然是定义一个临时变量,然后将两个数进行交换。这个比较好理解,
public static void test1(int a,int b){
System.out.println("a修改前的值"+a);
System.out.println("b修改前的值"+b);
int temp = a;
a = b;
b = a;
System.out.println("a修改后的值"+a);
System.out.println("b修改后的值"+b);
}
2、不使用临时变量,直接使用加减法交换即可。
public static void test2(int a,int b){
System.out.println("a修改前的值"+a);
System.out.println("b修改前的值"+b);
a=a+b;
//a-b应该等于a,但赋值是b 即b=a
b=a-b;
//再用a=a-b 即a=b
a=a-b;
System.out.println("a修改后的值"+a);
System.out.println("b修改后的值"+b);
}
3、不使用临时变量,直接使用异或运算。位运算是可逆的。比如 x^y=z
y^z=x
public static void test3(int a,int b){
System.out.println("a修改前的值"+a);
System.out.println("b修改前的值"+b);
a=a^b;
//同上面加法道理一样,本来a^b=a 但是将值赋b 即发生了交换
b=a^b;
//再用修改后的b和a异或即可
a=a^b;
System.out.println("a修改后的值"+a);
System.out.println("b修改后的值"+b);
}