实现两个变量值交换的三种方法:
m = 3, n = 5.
具体代码实现如下:
public class TwoChange {
public static void main(String[] args) {
int m = 3;
int n = 5;
/* 方法一:设置临时变量
int temp = m;
m = n;
n = temp;
System.out.println("m = " + m + "," + "n = " + n);
*/
/*方法二:利用两数相加和不变的原理
m = m + n;
n = m - n;
m = m - n;
System.out.println("m = " + m + "," + "n = " + n);
*/
// 异或可使两个数进行交换,异或的几大特性:
// 1、任何数X与自身进行异或,均为0。X^X = 0;
// 2、任何数与0进行异或,均为其本身。X^0 = X;
// 3、任何数与1进行异或,相当于对其二进制位上的数进行取反,即0变成1,1变成0
// 4、异或运算具有交换性,a^b = b^a, a^b^c = a^(b^c) = (a^c)^b
m = m ^ n;// m ^ n = 3^5 = 0011 ^ 0101 = 0110,此时m的值为3^5。
n = m ^ n;// m ^ n = 3^5^5 = 3^0 = 3,此时n的值为3。
m = m ^ n;// m ^ n = 3^5^3 = 3^3^5 = 0^5 = 5,此时m的值为5。
System.out.println("m = " + m + "," + "n = " + n);
}
}
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德
小白寄语:学如逆水行舟,不进则退。