关于两个变量值的互换问题

突然想起以前学习Java的时候,遇到的一个小思考题,今天来简单说一说。

问题:有两个int型变量a,b,如何在不申请额外的变量空间的情况下,实现两值互换?

先抛开这个问题,两值互换的基本思路一般是:

int a = 100;

int b = 400;

int temp = 0;

temp = a;

a = b;

b = temp;


如上已经非常完美的解决了换值问题,可是上面面的问题偏偏又这么一个条件:不申请额外的变量空间

(连个临时变量都不让用,还让不让人愉快的写代码了!!!)

那么有两个基本的思路可以并不完美的解决这个问题:1、求和法。2、做差法

1、求和法:

int a = 100;

int b = 400;

a = a + b;

b = a - b;

a = a - b;

2、做差法:

int a = 100;

int b = 400;

a = a - b;

b = a + b;

a = b - a;

为什么说“并不完美”呢?因为可能产生溢出问题。

Java语言中变量都是有长度的,所以我们不能保证变量相加或者相减不会溢出哦~

请慎用!!!

难道没有完美的解决方法了吗???

有!!!

3、位运算(异或^)

a = a^b

b = a^b

a = a^b

安全!高效!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值