如何不用第三个变量交换两个变量的值

(学java时遇到的,归类在java)
例如
a=10,b=12

方法一

算术方法
a=a+b (a=22,b=12)
b=a-b (a=22,b=10,即b=a+b-b)
a=a-b (a=12,b=10,即a=a+b-a)

方法二

异或方法
a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
即:abb=a。将a=ab代入b=ab则得b=abb=a;同理可以得到a=baa=b;轻松完成交换。
参考https://www.cnblogs.com/zxpp/p/4501377.html

原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14615316.html