不用第三方变量,交换两个数据
方法一:
//不用第三方变量,交换两个数据
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a = " + a);
System.out.println("b = " + b);
原理说明:
- 一个数据,被另一个数据,异或(^)两次,该数据不发生改变。如下,
- 10 ^ 20 ^20 = 10
- 20 ^ 10 ^ 20 = 10
具体分析:
int a = 10;
int b = 20;
a = a ^ b; //即 a = 10 ^ 20 ;
b = a ^ b; //即 b = 10 ^ 20 ^ 20 = 10 ;
a = a ^ b; //即 a = 10 ^ 20 ^ 10 = 20;
//至此交换完成,a=20;b=10;
方法二:
//不用第三方变量交换两个数据
int a = 10;
int b = 20;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a = " + a);
System.out.println("b = " + b);
原理说明:简单的数学运算逻辑
具体分析:
int a = 10;
int b = 20;
a = a + b; // a = 10 + 20 = 30;
b = a - b; // b = 30 - 20 = 10;
a = a - b; // a = 30 - 10 = 20;
//至此,两个数据交换已完成