package com.jeryFu.test;
/**
* 数据交换, 三种方式
* a变成b, b变成a
* @author jeryFu
*/
public class DataExchange {
public static void main(String[] args) {
int a = 5;
int b = 3;
/* 使用临时变量, 需要新开辟一个空间 */
useTemp(a, b);
/* 使用加减法, 如果数据足够大, 可能溢出 */
useMath(a, b);
/* 使用异或, 不用开辟新空间,不会溢出,运算速度快 */
useXOR(a, b);
}
/**
* 使用临时变量
* @param a
* @param b
*/
public static void useTemp(int a, int b){
int temp = a; // temp = 5
a = b; // a = 3
b = temp; // b = 5
System.out.println("a=="+a+", b=="+b);
}
/**
* 使用加减法
* @param a
* @param b
*/
public static void useMath(int a, int b){
a = a + b; // 5 + 3 = 8
b = a - b; // 8 - 3 = 5
a = a - b; // 8 - 5 = 3
System.out.println("a=="+a+", b=="+b);
}
public static void useXOR(int a, int b){
a = a ^ b; // 0101 ^ 0011 = 0110
b = a ^ b; // 0110 ^ 0011 = 0101
a = a ^ b; // 0110 ^ 0101 = 0011
System.out.println("a=="+a+", b=="+b);
}
}