实现两个数值的交换的三种方式(JAVA)

在日常开发中,对于两个变量我们可能需要进行值的交换,以下是我学习Java过程中见到的三种方式,供大家参考:

1、引入第三个变量t:

public class Test {
        public static void main(String[] args) {
            int a=1;
            int b=2;
            int t;          //引入第三个变量t
            t=a;            //将a的值赋给t进行保存
            a=b;            //将b的值赋给a
            b=t;            //将t保存的a赋给b
            System.out.println("a="+a);
            System.out.println("b="+b);    
        }
}

(此种方法比较容易理解,不会出现数值上的错误,但是会产生一个新的变量t,对内存空间有一定的浪费。)

2、采用加减法变换,做到值的交换,如下:

public class Test {
        public static void main(String[] args) {
            int a=1;
            int b=2;
            a=a+b;   //此时a=a+b;
            b=a-b;   //由于a=a+b;所以这一步执行的效果等同 (a+b)-b ,此时b的值为初始的a;
            a=a-b;   //由于a=a+b;所以这一步执行的效果等同 (a+b)-a ,此时a的值为初始的b;
            System.out.println("a="+a);
            System.out.println("b="+b);    
        }
}

 

(在a的值和b的值加起来超过对应类型的最大值的时候,则会出现越界的问题,进而得出的数据出现错误。所以在数值较大的时候不建议使用。)

3、采用位运算的方式,在异或运算中,一个数异或同一个数两次得到的值不变。(可以参考异或运算的法则)

public class Test {
    public static void main(String[] args) {
        int a=3;
        int b=5;
        
        a=a^b;      //此时a的值为a、b的异或集
        b=a^b;      //由于a=a^b,该处实现的效果等同于a^b^b,可见相当于a异或了b两次,所以得到的结果为a,即b=a
        a=a^b;      //由于a=a^b,在上一步实现了b=a ,该处实际效果等同于a^b^a,相当于b异或了两次的a,得到的结果为b,即a=b
        
        System.out.println("a="+a);
        System.out.println("b="+b);
    }
}

(由于该方法采取的是计算机底层的位运算,不会产生新的变量,不会对内存造成额外的开销,运算速度是三种方法种最快的,但和第二种方法一样,可能会出现越界问题,在数字较大时不建议使用。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值