黑马程序员技术交流社区
标题:
如何实现两个数据的交换,不能用中间变量
[打印本页]
作者:
明锦添
时间:
2013-3-19 22:28
标题:
如何实现两个数据的交换,不能用中间变量
如 x 与 y 的交换,不能用中间变量,请问如何实现.
作者:
张宝
时间:
2013-3-19 22:35
/*
对两个整数变量的值进行互换(不需要第三方变量)
*/
class Test
{
public static void main(String[] args)
{
int a=5;
int b=6;
// 不使用第三方变量 ^一个数异或另外一个数两次还是这个数本身
a=a^b; //这个时候a就代表的是b的值
b=a^b; //b的值变成了5 (a^b)^b
a=a^b; //a的值变成了6 (a^b)^a
System.out.println(a+" "+b); //6 5
}
}
作者:
刘国涛
时间:
2013-3-19 22:37
x= x + y;
y= x - y;
x= x - y;
但是如果x和y的值非常大,容易超出int范围,所以建议使用第三方变量实现交换。
作者:
曹春贵
时间:
2013-3-19 22:38
int m = 5, n = 8;
// 需要第三方变量的方法,该方法简单易懂,实际开发中基本都使用该方法
int tmp = m;
m = n;
n = tmp;
System.out.println("m=" + m + ",n=" + n);
//使用累计俩数之和再分别求差值
m=m+n;
n=m-n;
m=m-n;
System.out.println("m=" + m + ",n=" + n);
//使用 一个数异或另一个数俩次还是该数本身的原理
m=m^n;
n=m^n;
m=m^n;
System.out.println("m=" + m + ",n=" + n);
复制代码
作者:
张宝
时间:
2013-3-19 22:39
本帖最后由 张宝 于 2013-3-19 22:42 编辑
/*
方法2:对两个整数变量的值进行互换(不需要第三方变量)
*/
class Test2
{
public static void main(String[] args)
{
int a=5;
int b=6;
a=b+(b=a)-a;
System.out.println(a);
System.out.println(b);
}
}
作者:
黄玉昆
时间:
2013-3-19 22:45
同学,是不是应该多看看毕老师的视频,再提问呢?老师的视频中讲的特别详细
作者:
lxww
时间:
2013-3-19 22:48
class Test02
{
public static void main(String[] args)
{
int a=3;
int b=7;
a=a^b;
b=a^b;
a=a^b;
System.out.println("a="+a+"; "+"b="+b);
}
}
作者:
田磊阳
时间:
2013-3-19 22:54
采用第三方是最好的方法,没有太多的问题,如果分要不用第三方,那你可以采用异或的方式
作者:
耿文达
时间:
2013-3-19 22:57
本帖最后由 耿文达 于 2013-3-19 23:01 编辑
利用“一个数异或同一个数两次,结果还是最初的那个数”这个性质,代码如下:
class Test
{
public static void main(String[] args)
{
int n = 5,m = 9;
System.out.println("n="+n+",m="+m);
n = n ^ m;
m = n ^ m; //此时n'=n^m,因此m' = (n^m)^m = n ;
n = n ^ m; //n'' = n' ^ (n' ^ m)= m
System.out.println("n="+n+",m="+m);
}
}
复制代码
作者:
小路飞
时间:
2013-3-20 00:44
你可以看一下day02代码 OperateDemo2.java,其中就有提到!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2