经典面试题:在不使用临时变量的情况下,怎么对两个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);
}
}
本文介绍两种不使用额外变量实现两个整数变量值交换的方法:一是通过异或运算实现,二是利用加减运算完成。这两种方法巧妙地避免了传统方式中对临时变量的依赖,为编程提供新的思路。
207

被折叠的 条评论
为什么被折叠?



