java进行两数交换时,如何不用中间量就交换?

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:43:43
比如说要进行两数交换的时候需要设定以个变量temp 用它作为中间量倒
我像问的是如何不用这个中间量就能给两数调换 ,请高人指点迷津
对,就是用引用型对象来实现 请这位仁兄帮忙指点下 谢谢了

方法有很多,这里举出两种常用的:
方法1:使用^操作来实现
int x = 10;
//用二进制表示:x=0b1010;
int y = 15;
//用二进制表示:x=0b1111;
System.out.println("x="+x+" y="+y);
x = x^y;
//x^y= 0b1010^0b1111 = 0b0101
y = x^y;
//x^y= 0b0101^0b1111 = 0b1010 =10
x = x^y;
//x^y= 0b0101^0b1010 = 0b1111 =15
System.out.println("x="+x+" y="+y);
方法2:使用+,-操作来实现
int x = 10;
int y = 15;
System.out.println("x="+x+" y="+y);
x = x+y;
//x= 10+15=25
y = x-y;
//y= 25-15=10
x = x-y;
//x= 25-10=15
System.out.println("x="+x+" y="+y);
结果:
x=10 y=15
x=15 y=10
早期为了减少中间变量对计算机内存的占用,采用中间的方法来交换数据。其实这种交换并不完美,如果交换的两个数都很大,可能会内存溢出。在现在的开发中建议使用中间值来交换数值。

是可以实现的!举一个简单的例子!
int a;int b;
a=a+b;//举例a=10,b=20,那么,现在a=30,b=20
b=a-b;//b=30-20=10
a=a-b;//a=30-10=20
//a=20,b=10.交换成功
不借用第三变量做数据交换的方法有很多,不过我就记住这一种!好像还有个异或运