基本原理:数字a与数字a异或结果为0,即抵消掉!
基于此,首先让 a = a ^ b,然后 b = a ^ b = (a ^ b) ^ b = a,最后,a = a ^ b = (a ^ b) ^ a = b(注意原来的b对应现在的a了)。
package com.ly.test;
public class MyTest {
public static void main(String[] args) {
int a = -2020;
int b = 2020;
System.out.println("交换前:" + "[a = " + a + "," + " b = " + b + "]");
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("交换后:" + "[a = " + a + "," + " b = " + b + "]");
}
}
交换前:[a = -2020, b = 2020]
交换后:[a = 2020, b = -2020]
Process finished with exit code 0