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