Java 不使用中间变量交换两个数

public class ChangeStation {

	public static void main(String[] args) {
		Num num = new Num(3, 4);
		swapOne(num);
//		swapTwo(num);
		System.out.println(num);
	}

	/**
	 * @description: 通过某种运算(二元运算)将a和b两个数变成一个数, 
	 * 				并保存在其中一个变量中, 
	 * 				然后再通过同样的运算符将a或b中和掉,
	 *              这样实际上是利用了a或 b本身作为了中间变量。
	 * @param num
	 * @return void
	 * @throws @author
	 *             beyond
	 * @data:2016年10月28日下午3:09:31
	 */
	public static void swapOne(Num num) {
		num.a = num.a + num.b;
		num.b = num.a - num.b;
		num.a = num.a - num.b;
	}

	
	/**
	 * @description: 异或运算符: 任何数与0异或后仍然为它本身,两个相同的数异或后为0
	 * @param num   
	 * @return void   
	 * @throws
	 * @author beyond
	 * @data:2016年10月28日下午3:11:16
	 */
	public static void swapTwo(Num num) {
		num.a = num.a ^ num.b;
		num.b = num.a ^ num.b;
		num.a = num.a ^ num.b;
	}

	
	/**
	 * @description: 交换的类
	 * @author beyond
	 * @data:2016年10月28日下午3:11:16
	 */
	static class Num {
		private int a;
		private int b;

		public Num(int a, int b) {
			super();
			this.a = a;
			this.b = b;
		}

		@Override
		public String toString() {
			return "Num [a=" + a + ", b=" + b + "]";
		}

	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值