怎么在java上完成,实现两个int类型变量的交换,不使用中间变量

 我来答
夜独行孤单
推荐于2017-12-15 · TA获得超过3460个赞
知道大有可为答主
回答量:2803
采纳率:82%
帮助的人:643万
展开全部
方法有很多,这里举出两种常用的:
方法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
早期为了减少中间变量对计算机内存的占用,采用中间的方法来交换数据。其实这种交换并不完美,如果交换的两个数都很大,可能会内存溢出。在现在的开发中建议使用中间值来交换数值。
追问
关键还是刚开始的,我不懂
匿名用户
2016-03-07
展开全部
static class Num
{
int a;
int b;
}
public static void swap1(Num num)
{

num.a = num.a + num.b;
num.b = num.a - num.b;
num.a = num.a - num.b;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
班俊郎0HG
2018-02-01
知道答主
回答量:2
采纳率:0%
帮助的人:1778
展开全部
方法很多,我比较喜欢的这种:
int x = 10;
int y = 15;
System.out.println("x="+x+" y="+y);
x = x-y;
//x= 10-15=-5
y = x+y;
//y= -5+15=10
x = y-x;
//x= 10-(-5)=15
System.out.println("x="+x+" y="+y);
结果:
x=10 y=15
x=15 y=10
我自己觉得,算是比较好的一种方法,看着比较复杂了一点,减少了中间变量的内存占用,也不会有溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式