方法:“异或”位运算符
原理:两个相同的数异或之后结果会等于 0,即 n ^ n = 0。
并且任何数与 0 异或等于它本身,即 n ^ 0 = n。
public class Main {
public static void main(String[] args) {
int x = 4;
int y = 7;
x = x ^ y;//x是新的x,实际这里的等号左边的x已经变为3。
y = x ^ y;//由于x是新的x,所以y=(x^y)^y=x^(y^y)=x^0 = x(旧的x=4)
x = x ^ y;//由于x和y都为新的,所以x=(x^y)^((x^y)^y),打开括号x=y(旧的y=7)
//这三步的结果按照异或运算的规则来说结果是这样的,但是每一步x,y的值是真正变化的,
// 最后的结果无论按照正常的每一步的异或运算还是推倒的异或运算结果都是相同的。
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}