不使用辅助变量的前提下实现两个变量的交换

package com.yushifu.operator;
//不用第三个辅助变量,实现两个数的交换
public class Demo08 {
    //方法一
    public static void exchange_01(double a, double b){
        a = a+b;
        b = a-b;
        a = a-b;
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("----------------------------------------------------");
    }
    public static void exchange_02(double a,double b){

        //方法二 数组
        double[] m = {a,b};
        a = m[1];
        b = m[0];
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("----------------------------------------------------");
    }
    public static void exchange_03(int a,int b){
        //方法三 异或(二进制,只能用于交换整数,浮点数不可) 核心思想是 0^x = x  同0异1
        a = a^b;//(1)
        b = a^b;//(2)在(1)的作用下,等价于b=a^b^b——>因为b^b=0,且0^x=x,这就实现了将a赋值给b
        a = a^b;//(3)a=a^b^b——>注意此式中第一个b的值为原来的b,第二个b则通过(2)变成了a,
                // 即(3)等价于a=a^原b^a,等价于a=0^原b,即实现了b值赋给a
        System.out.println("a="+a);
        System.out.println("b="+b);
    }
    
    public static void main(String[] args) {
        exchange_01(900,3000);
        exchange_02(3.2,6.8);
        exchange_03(336,554);
    }
}

运行结果:
不使用辅助变量的前提下实现两个变量的交换_第1张图片

你可能感兴趣的:(javaSE,java,开发语言)