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 + "]";
}
}
}