前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 使用异或进行数组元素交换时的坑 返回0的原因

Java 使用异或进行数组元素交换时的坑 返回0的原因

作者头像
heasy3
发布2020-08-01 16:03:41
1.4K0
发布2020-08-01 16:03:41
举报

在使用异或交换数组值的时候,可以使用异或,不用临时变量。

但是这个方法当i与j相等时,相当于始终对一个数自己进行异或,我们知道两个一样的数异或结果为0

假如i==j 则

代码语言:javascript
复制
a[i] = a[i] ^ a[j]; //结果为0 则此时a[i]=a[j]=0
a[j] = a[i] ^ a[j]; // = 0 ^ 0 = 0;
a[i] = a[i] ^ a[j]; // = 0

所以最后结果为0

添加一行判断问题解决。

代码语言:javascript
复制
private void swap(int[] a, int i, int j) {
    if (i == j){return;}//关键
    a[i] = a[i] ^ a[j];
    a[j] = a[i] ^ a[j];
    a[i] = a[i] ^ a[j];
    System.out.println("swap:" + a[j] + " <-> " + a[i]);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档