黑马程序员技术交流社区

标题: 关于不用临时变量来交换两个数的值的方法 [打印本页]

作者: 苏浩    时间: 2014-10-21 00:54
标题: 关于不用临时变量来交换两个数的值的方法
//对这个交换过程不是很明白

public static void fun3(){
                        int a = 4;
                        int b = 5;
                       
                        System.out.println("交换前:a=" + a + ", b=" + b);

                        a = a ^ b;  
                        b = a ^ b;   
                        a = a ^ b;   

                        System.out.println("交换后:a=" + a + ", b=" + b);
                }

作者: 杨佳名    时间: 2014-10-21 01:02
一个数两次异或同一个数后,是它本身,楼主明白吗?
那么接下来就好说了。
a = a ^ b;                //     定义一个临时变量 temp = a =  a ^ b;
b = a ^ b;                //     b = temp ^ b ;   此时 b = a ;
a = a ^ b;                //     a = temp ^ a ;    此时 a = b;
作者: zhappy    时间: 2014-10-21 08:30
a = a + b;
b = a - b;
a = a - b;
也行
作者: HM2014nuli    时间: 2014-10-21 08:44
a=a^b(a现在等于a^b);  b=(a^b)^b(一个数与一个数2次还是原来的数,这时b=a),a=a^(a^b)(这时a=b)




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