方法一:

这种交换方法是最常用的一种方式,即引入第三个变量充当交换介质.

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数值均非常大,二者之和可能会超出该类型数所能表达的最大范围.而方法四相对来说不会有这种问题.

posted on 2018-05-29 22:38  艾克_塞伦特  阅读(919)  评论(0编辑  收藏  举报