在java中不使用第三个变量如何替换两个变量的值?

可能有些同学面试的时候会遇到一个面试题:
java如何实现两个变量值交换不使用第三个变量?
我们看见交换两个变量的值首先会想到用一个变量来接收,如下:

public class Test01 {
    public static void main(String[] args) {
        int c = 1;
        int d = 2;
        int temp ;
        temp = c;
        c = d;
        d = temp;
        System.out.println(c);//输出2
        System.out.println(d);//输出1
    }
}

这样就完成了一个交换两个变量值的操作,但是问题来了,题目要求不使用第三个变量,那该如何去写呢?
首先我们可以先用加减法来进行交换,如下:

public class Test01 {
    public static void main(String[] args) {
        int c = 1;
        int d = 2;
        c = c+d;    //c = 3
        d = c-d;    //d = 1
        c = c-d;    //c = 2
        System.out.println(c);
        System.out.println(d);
    }
}

可以看到我们使用了加减法来完成了不使用第三个变量来进行交换值的操作,那么还有没有其他办法呢?
我们可以使用异或来解决,如果不明白关于位运算的,这几天会更新一篇位运算的文章

public class Test01 {
    public static void main(String[] args) {
    	//使用异或来解决不使用第三个变量来交换两个变量的值的操作
        int a = 3;
        int b = 4;
        System.out.println("交换前的a的值:"+a);
        System.out.println("交换前的b的值:"+b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("交换后的a的值:"+a);
        System.out.println("交换后的b的值:"+b);
    }
}

三种方法都比较简单,就不多解释其中的原理了,关于位运算会在最近更新一篇详细介绍,有错误期待大佬指出,谢谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值