Java实现两个int类型变量值交换
两种方式:加减、异或。
public class Swaptest {
public static void main(String[] args) {
int a = 1;
int b = 2;
swap1(a, b);
swap2(a, b);
}
public static void swap1(int a, int b) {
System.out.printf("before swap1 : a = %d, b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
System.out.printf("after swap1 : a = %d, b = %d\n", a, b);
/* a = a + b - a;
* b = a + b - b;
* 缺点,如果a+b超过int类型上线,则溢出。
*/
}
public static void swap2(int a, int b) {
System.out.printf("before swap2 : a = %d, b = %d\n", a, b);
a = a^b;
b = b^a;
a = a^b;
System.out.printf("after swap2 : a = %d, b = %d\n", a, b);
/* a = a^b^a
* b = b^a^b
* 一个数异或同一个数两次,结果还是那个数,而且不会超出int范围。
*/
}
}