Java中交换两个整数变量的值

本文发表在本人GItHub主页,请移步Java中交换两个整数变量的值 阅读原文。

需求

如下,我们定义了两个整数变量,并且分别进行了赋值,下面,我们需要实现的就是将x的值赋值给y,将y值赋值给x,实现x和y的值交换:

     int x = 100;
    int y = 200;

方法一:使用临时变量
        int x = 100;
       int y = 200;
       int temp = x; //定义一个临时遍历保存x的值
       x = y; //将y值赋值给x
       y = temp; //再将临时变量保存的x的值赋值给y

上面这种方式很容易看懂,也是实际开发当中经常这么做的,也建议开发中就这么干。

方法二:位运算符
        int x = 100;
       int y = 200;
       x = x ^ y ;
       y = x ^ y ;
       x = x ^ y ;

学过异或我们知道:

  • 一个数被另一个数异或两次,该数保持不变 
    下面我们分析下上面的代码发生了什么:

    int x = 100;
   int y = 200;
   x = x ^ y ; //x的值发生了改变,成为了x ^ y
   y = x ^ y ;//这里的x是新的值,页就送x ^ y ,那么这句其实就是 y = x ^ y ^ y,也就是y=x,这里x是最初的x值
   x = x ^ y ;//这里的x等于x^y,这里的y已经成为最初的x,也就是 x = x ^ y ^ x,也就是x=y

至此完成了x和y的值的交换,这种操作方式可能会出现在面试题中。

方法三:加减操作
        int x = 100;
       int y = 200;
       x = x + y ;
       y = x - y ;
       x = x - y ;

通过上面的代码,我们也完成了x和y的交换,那么这里又发生了什么呢?

        int x = 100;
       int y = 200;
       x = x + y ;  //这里x成为最初的x与y的和
       y = x - y ; //y = x + y - y,这里将最初的x赋值给了y
       x = x - y ; //右边的x=x+y,y=x,也就是x = x + y -x ,也就是x的值成为了最初的y的值。

通过简单的+、-操作也实现了x和y值的交换。

方法四:一句话搞定
        int x = 100;
       int y = 200;
       y = (x + y) - (x = y);

虽然 y = (x + y) - (x = y)这一个式子完成了x和y的值交换,其实包含了多个步骤:

  • 先运算右边的x+y

  • 将y值赋给了x

  • x+y-y赋给了y

至此实现了x和y值的交换。

后记

在实际开发中为了可读性,还是强烈建议使用第一种方式,后面几种当作兴趣了解下即可,加深对Java基础的理解,如果你还有其他到方式实现,欢迎留言探讨~

本文发表在本人GItHub主页,请移步Java中交换两个整数变量的值 阅读原文。

转载于:https://my.oschina.net/funga/blog/524742

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值