JAVA交换两个变量的值-(不使用第三变量)

时间:2022-11-11 20:05:58

以下方法的根本原理就是: 

借助第三个变量

c = a;
a = b;
b = c;

运算符-不借助第三变量: 
a = a+b; 
b = a-b; 
a = a-b; 
为运算符-不借助第三个变量: 

(此种方法运用这种原理:一个数对另一个数位异或两次,该数不变)
a = a^b; 
b = a^b; 
a = a^b; 

/**
 * Swap
 * 互换两个变量的值的方法
 * @author bc
 * @since 2018年3月27日
 */
public class Swap {
    public static void main(String[] args) {
        int a = 3, b = 5;
        System.out.println("===临时变量===");
        temp(a, b);
        System.out.println("===算数运算===");
        arithmetic(a, b);
        System.out.println("===位运算====");
        bit(a, b);
    }

    // 借助第三个变量,使a,b变量的值交换
    public static void temp(int a, int b) {
        System.out.println("a=" + a + ";b=" + b);

        int c = a;
        a = b;
        b = c;

        System.out.println("a=" + a + ";b=" + b);
    }

    // 算数运算--(不借助第三个变量)
    public static void arithmetic(int a, int b) {
        System.out.println("a=" + a + ";b=" + b);

        a = a + b;//8
        b = a - b;//3
        a = a - b;//5

        System.out.println("a=" + a + ";b=" + b);
    }

    // 位运算--(不借助第三个变量)
    public static void bit(int a, int b) {
        System.out.println("a=" + a + ";b=" + b);
        
        //按位异或的运算规则--异:1
        /**
         *     a    :0011
         *     b    :0101
         * a^b  :0110
         */
        a = a ^ b; //0110
        /**
         *     a     :0110
         *     b     :0101
         *     a^b  :0011
         */
        b = a ^ b; //0011
        /**
         *     a     :0110
         *     b     :0011
         *     a^b  :0101
         */
        a = a ^ b; //0101

        System.out.println("a=" + a + ";b=" + b);
    }
}