package deep;
public class Swap {
public static void main(String[] args) {
Value value = new Value(5, 10);
System.out.println("交换前:" + value);
swap(value);
System.out.println("交换后:" + value);
}
/**
* @Description 通过相加的方式
* @author 田爽
* @date 2015年4月8日下午6:31:42
*/
private static void swap(Value value) {
value.x = value.x + value.y;
value.y = value.x - value.y;
value.x = value.x - value.y;
}
}
class Value {
int x;
int y;
public Value(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Value [x=" + x + ", y=" + y + "]";
}
}
运行结果:
交换前:Value [x=5, y=10]
交换后:Value [x=10, y=5]
package deep;
public class Swap {
public static void main(String[] args) {
Value value = new Value(5, 10);
System.out.println("交换前:" + value);
swap(value);
System.out.println("交换后:" + value);
}
/**
* @Description 通过异或的方式(一个变量x异或另外一个变量y两次,结果为x)
* @author 田爽
* @date 2015年4月8日下午6:31:42
*/
private static void swap(Value value) {
value.x = value.x ^ value.y;
value.y = value.x ^ value.y;
value.x = value.x ^ value.y;
}
}
class Value {
int x;
int y;
public Value(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Value [x=" + x + ", y=" + y + "]";
}
}
运行结果:
交换前:Value [x=5, y=10]
交换后:Value [x=10, y=5]