经典面试题:在不使用临时变量的情况下,怎么对两个int型变量的数值进行交换?
方法一:异或运算
public class MainClass {
public static void main(String[] args) {
int a = 2;
int b = 6;
System.out.println("a:" + a + ", " + "b:" + b);
a = a ^ b;
b = b ^ a; // b = b ^ (a ^ b); -> b = b ^ a ^ b; -> b = b ^ b ^ a;
a = a ^ b; // a = (a ^ b) ^ (b ^ (a ^ b));
System.out.println("a:" + a + ", " + "b:" + b);
}
}
方法二:加减运算
public class MainClass {
public static void main(String[] args) {
int a = 2;
int b = 6;
System.out.println("a:" + a + ", " + "b:" + b);
a = a + b;
b = a - b; // b = (a + b) - b;
a = a - b; // a = (a + b) - ((a + b) - b);
System.out.println("a:" + a + ", " + "b:" + b);
}
}