swap - 普通程序员、文艺程序员、2B程序员

C、C++版:看到同学人人的发表日志,觉得有趣,然后就写下来。仅供娱乐。

普通程序员:

void swap (int &a, int &b)
{
	int temp = a;
	a = b;
	b = temp;
}

文艺程序员:

void swap (int &a, int &b)
{
	a = a^b;
	b = a^b;
	a = a^b;
}

2B程序员:

void swap (int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
}


那么Java版的该如何呢?事实上,用Java去写一个int型的两个数,并不像C++中的那样简单,因为Java中不提供指针。想要像C++这样文艺起来并不容易。

下面是用Java实现的代码,估计能算个普通程序员吧,2B程序员就很容易弄了,文艺的就不知道怎样了(那就要靠大家的想法了):

public class Swap {

	/**
	 * @param args
	 */
	@SuppressWarnings("unchecked")
	static public void swap(Wrapper x, Wrapper y){
		Wrapper z = new Wrapper(x.getA());
		x.setA(y.getA());
		y.setA(z.getA());
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Wrapper<Integer> wA = new Wrapper<Integer>(1);
		Wrapper<Integer> wB = new Wrapper<Integer>(2);
		System.out.println("wA = " + wA.getA() + " wB = " + wB.getA());
		swap(wA, wB);
		System.out.println("wA = " + wA.getA() + " wB = " + wB.getA());
		Wrapper<String> w1 = new Wrapper<String>("123");
		Wrapper<String> w2 = new Wrapper<String>("456");
		System.out.println("w1 = " + w1.getA() + " w2 = " + w2.getA());
		swap(w1, w2);
		System.out.println("w1 = " + w1.getA() + " w2 = " + w2.getA());
	}
}
class Wrapper<T> {
	private T a;
	public Wrapper(T a){
		this.a = a;
	}
	public T getA() {
		return a;
	}
	public void setA(T a) {
		this.a = a;
	}
}

PS:顺带说一下,Java中的AtomicReference类也可以实现交换,和我上面的原理一样。之所以自己写一个Wrapper类,是为了大家看的简单点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值