如何在不新增变量的前提下交换 int a=11,int b=21 的值。
1、若是放在平时可能会进行如下操作:
int a = 11;
int b = 21;
//新增变量c为中间变量
int c =0;
c = a;
a = b; //此时 a 的值为21
b = c; //此时 b 的值为11
System.out.println("a--->"+a);
System.out.println("b--->"+b);
结果:
2、不新增变量直接替换
2.1、在开始代码之前,需要知道 位运算符 异或 的概念:
异或:相同得0,不同得1
举例1:
1 0 1 可认为是变量 a
0 1 1 可认为是变量 b
------------ 进行异或操作
1 1 0 操作后的值 a^b
1 0 1 a
------------ 对上面异或后的结果在进行 对 a 的异或操作
0 1 1 b
举例2:
1 1 0 操作后的值 a^b
0 1 1 b
---------- 在对 b 进行 异或
1 0 1 a
2.1、看懂上面的举例之后,进行代码说明:
int a = 11;
int b = 21;
a = a^b; // 得到一个中间值
b = a^b; // 对中间值进行还原:此时 b 的值为 11
a = a^b; //对中间值进行还原:此时 a 的值为 21
System.out.println("a--->"+a);
System.out.println("b--->"+b);
结果: