方法一:
这种交换方法是最常用的一种方式,即引入第三个变量充当交换介质.
class SwapTwoNums{
public static void main(String[] args){
int a = 3;
int b = 4;
System.out.println("Numbers before swap: " + "a = " + a +", b = " + b);
int temp = a;
a = b;
b = temp;
System.out.println("Numbers after swap: " + "a = " + a +", b = " + b);
}
}
方法二
直接赋值,先计算二者之和,然后把a的值赋给b,最后二者之和再减去a的值得到b,最后赋给a.
class SwapTwoNums{
public static void main(String[] args){
int a = 3;
int b = 4;
System.out.println("Numbers before swap: " + "a = " + a +", b = " + b);
a = (a + b) - (b = a);
System.out.println("Numbers after swap: " + "a = " + a +", b = " + b);
}
}
方法三
另一种直接赋值方式,实质同方法二.
class SwapTwoNums{
public static void main(String[] args){
int a = 3;
int b = 4;
System.out.println("Numbers before swap: " + "a = " + a +", b = " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.println("Numbers after swap: " + "a = " + a +", b = " + b);
}
}
方法四
利用一个数同另一个数作两次异或运算,结果等于本身.即a = a ^ b ^ b.
class SwapTwoNums{
public static void main(String[] args){
int a = 3;
int b = 4;
System.out.println("Numbers before swap: " + "a = " + a +", b = " + b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("Numbers after swap: " + "a = " + a +", b = " + b);
}
}
备注:方法二和三存在上溢的可能,即倘若a和b数值均非常大,二者之和可能会超出该类型数所能表达的最大范围.而方法四相对来说不会有这种问题.