A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int a=10;
int b = 20;
int a =a + b;
int b = a-b;
int a =a -b;

7 个回复

倒序浏览
cat73 黑马帝 2016-7-22 17:02:51
沙发
本帖最后由 cat73 于 2016-7-22 22:17 编辑

这种做法的效率是比用中间变量的方法低的。。。
而且比较违反常识的是,这种方法占用内存跟临时变量法比没有任何优势,一模一样多。

回复 使用道具 举报
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
回复 使用道具 举报
您这种方法有可能会超出int类型范围,建议用异或运算符完成.原理是:
一个数据对另一个数据位异或两次,该数本身不变。举例说说明一下:
  1. int a=1;
  2. int b=2;
  3. x = x ^ y;
  4. y = x ^ y;
  5. x = x ^ y;
  6. System.out.println("x = " + x + ",y = " + y);
复制代码

回复 使用道具 举报
楼上写错了  两个变量是x和y
回复 使用道具 举报
默默的看了一下,都是我发过的~~~然后被批的我都不敢见人了~~~
回复 使用道具 举报
一般会用^(异或运算符)来实现,而且一般面试题会这么问
回复 使用道具 举报
李铮 中级黑马 2016-7-22 23:54:58
8#
666666虽然有点小瑕疵  但是依然6
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马