不新增变量,交换a、b的值

如何在不新增变量的前提下交换 int a=11,int b=21 的值。

1、若是放在平时可能会进行如下操作:


        int a = 11;
        int b = 21;

        //新增变量c为中间变量
        int c =0;
        c = a;
        a = b;  //此时 a 的值为21
        b = c;  //此时 b 的值为11

        System.out.println("a--->"+a);
        System.out.println("b--->"+b);

结果:

2、不新增变量直接替换

  2.1、在开始代码之前,需要知道 位运算符 异或 的概念:

异或:相同得0,不同得1
举例1:
    1 0 1     可认为是变量  a
    0 1 1     可认为是变量  b
------------  进行异或操作
    1 1 0     操作后的值    a^b
    1 0 1     a
------------  对上面异或后的结果在进行 对 a 的异或操作
    0 1 1     b 

举例2:
    1 1 0     操作后的值  a^b
    0 1 1     b    
----------    在对 b 进行 异或
    1 0 1     a

   2.1、看懂上面的举例之后,进行代码说明:

        int a = 11;
        int b = 21;
        
        a = a^b;  // 得到一个中间值
        b = a^b;  // 对中间值进行还原:此时 b 的值为 11
        a = a^b;  //对中间值进行还原:此时 a 的值为 21

        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、付费专栏及课程。

余额充值