黑马程序员技术交流社区

标题: 交换整型变量a,b的值 [打印本页]

作者: rchm    时间: 2012-6-19 00:18
标题: 交换整型变量a,b的值
请问有什么方法可以实现交换a,b两个变量的值?条件是不借助其他变量.
作者: 余银桂    时间: 2012-6-19 00:23
这个老毕的视频里有!

第一种:

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


第二种:

a=a^b;        
b
=b^a;        
a
=b^a;
作者: 吴扬    时间: 2012-6-19 01:38
同楼上,毕老师的视频里面提到过,有两种方法
1.通过运算来交换
int a = 3;
int b = 8;
a = b-a;//a的值变为5,而b的值仍然为8
b = b-a;//b的值变为3,a的值为5
a = a+b;//b的值为8,a的值相加之后变成8

2.通过异或的方法来交换
int a = 3;
int b = 8;
a=a^b;
b=b^a;// b=b^a=b^(a^b)=a,此时a的值已经赋给b,但是a的结果为a^b
a=b^a;//a=b^a=a^(a^b)=b,完成交换

不过我觉得如果是引用型数据类型就不行了吧!如果是引用型数据还是用中间变量的方法吧,这种方法容易想到,也容易阅读!
作者: 刘笑    时间: 2012-6-19 11:27
楼主该好好看视频了
作者: 朱东方    时间: 2012-6-20 13:10
本帖最后由 朱东方 于 2012-6-20 13:12 编辑

楼上只说了两种,还有一种"最常用"的。

用中间变量 temp

temp=a;    //a的值赋给中间变量temp
a=b;          //b的值赋给a
b=temp;   //中间变量temp的值也就是a的值赋给b

作者: 张建峰    时间: 2012-6-20 13:18
毕老师基础视频02天的
1,通过第三方变量
                int a = 3 , b = 8;
                int z;
                z = a;
                a = b;
                b = z;
不用第三方变量:               
                b = b + a;
                a = b - a;
                b = b - a;
               
                b = b ^ a;
                a = b ^ a;
                b = b ^ a;
                 
               
作者: 常佳杰    时间: 2012-6-20 13:24

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

                b = b ^ a;
                a = b ^ a;
                b = b ^ a;
作者: 胡大强    时间: 2012-6-20 13:24
class JaioHuan
{
        public static void main(String[] args)
        {
                int a=8,b=3;
                a = a+b;  //此时经过运算a=11;
                System.out.println(a);//输出a=11;
                   b = a-b;   //b=11-3=8;
                   a = a-b;   //a=11-8=3;
                System.out.println(a+"..."+b);

        }
}
其实说来说去还是相当于有第三方变量进来进行交换的、
作者: 郑冬    时间: 2012-6-20 15:05
代码如下:

int a = 10, b = 2;
a = a + b;
b = a - b;
a = a - b;

复制代码 代码如下:
int a = 10000,b=245
a = a^b;
b = b^a;
a = a ^b;

复制代码 代码如下:
int a = 33,b=44
a=[a,b]
b=a[0]
a=a[1]

复制代码 代码如下:
int a = 23,b=454;
a = {a:b,b:a};
b = a.b;
a = a.a;


作者: 游洪波    时间: 2012-6-20 18:47
利用^运算符(异或运算),
a=a^b;
b=a^b;
a=a^b;
就可以了




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