2021-11-11 Java不使用第三个变量,将两个变量交换

第一种方法、使用异或交换变量

1、异或^ 的性质

1.a∧b,两个数相同等于0,两个数不同则等于1:0^N=N,N^N=0

2.a∧b∧c 异或可以随便交换位置。交换律、结合律:a^b=b^a,a^b^c=a^(b^c)

3.同一样的一批数进行异或,和谁先谁后无关,只要是同一批数进行异或结果是一样的。

2、代码实现:交换两个变量

缺点:连两个变量不能在同一片内存中。

int a = 10;
int b = 2;

// 第二次 b会等于 a^b^b,由于异或的性质,交换律和结合律,和相同的为0,不同的为1,b^b会等与0,所以第二次会等a
// 第三次 a会等于 a^a^b^b^b 所以a 会等于b,因为a^a和b^b会等于0,就只剩下一个b
// 同一样的一批数进行异或,和谁先谁后无关,只要是同一批数进行异或结果是一样的,所以就交换了a和b的值
a = a^b; // 8  // a = 8      // a=a^b 
b = a^b; // 10 // b = 8 ^ 2  // b=a^b^b
a = a^b; // 2  // a = 8 ^ 10 // a=a^b^a^b^B

第二种方法:使用数学的方法,和上面的相识。

a = a + b;
b = a - b; //b=a+b-a
a = a - b; //a=a+b-a

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值