这种交换方法是最经常使用的一种方式,即引入第三个变量充当交换介质.java
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.code
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
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数值均很是大,两者之和可能会超出该类型数所能表达的最大范围.而方法四相对来讲不会有这种问题.方法