黑马程序员技术交流社区

标题: 交换两个变量 [打印本页]

作者: 禾叶青青    时间: 2015-7-15 00:21
标题: 交换两个变量

                   int a =10;
                   int b =20;
                   开发:临时变量
                            inttemp = a;
                            a= b;
                            b= temp;
                   面试:位^运算符
                            a= a ^ b;
                            b= a ^ b;
                            a= a ^ b;


作者: 张亚昆    时间: 2015-7-15 00:59
是这样啊,其实还有两种常见的方法,java中做一件事方法很多
作者: 懒人不是懒    时间: 2015-7-15 08:54
本帖最后由 懒人不是懒 于 2015-7-15 08:56 编辑

a=a^b;//把a和b异或的值赋予a.b=a^b;//把a和b异或等于最开始的a,
a=a^b;//等于最开始的b,
问下,最后那个a=a^b是什么个过程?

作者: 蔡锐    时间: 2015-7-15 09:02
懒人不是懒 发表于 2015-7-15 08:54
a=a^b;//把a和b异或的值赋予a.b=a^b;//把a和b异或等于最开始的a,
a=a^b;//等于最开始的b,
问下,最后那个a ...

设a为3b为4
第一次a=3^4
第二次b=3^4^4=3
第三次a=3^4^3=4
这么说你明白了么?
作者: 懒人不是懒    时间: 2015-7-15 09:06
蔡锐 发表于 2015-7-15 09:02
设a为3b为4
第一次a=3^4
第二次b=3^4^4=3

懂了,谢谢指教
作者: fantianfei    时间: 2015-7-15 09:08
其实方法有很多种,定义一个第三方变量或者通过抑或,减法,等多种运算。
作者: 朝着梦想使劲冲    时间: 2015-7-15 12:48
int a=3, b=4;
a=a+b;
b=a-b;
a=a-b;
这种方法有局限性,就是a+b不能超过int类型的最大值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2