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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 唐林渊 于 2012-2-18 08:37 编辑

关于调换两个数字的位置,不用第三方变量。大家晒晒有几种方法,本人了解四种。
比如A=2 B=6调换位置

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

15 个回复

正序浏览
黄秋 黑马帝 2012-2-18 05:30:21
16#
hxc2008q 发表于 2012-2-18 02:12
同问八楼那个能用吗

怎么不去试试呢?7楼的也可,原理一样。
回复 使用道具 举报
黄秋 黑马帝 2012-2-18 05:28:50
15#
最初的理想 发表于 2012-2-16 20:43
这个语句的执行有点奇怪,b+(b = a)-a执行顺序是从左向右执行,这就与括号的优先级最高相矛盾了,如果真 ...

是先执行括号的,这样(b = a)就是a了,b+(b = a)-a 变成 b+a-a -->b,最后就将 b 的值给 a 了。而 a 值给 b,(b = a)已完成。(b = a)不会将前面的 b 存储的值冲掉吗?不会的,JVM会先将值存入栈(相当于用临时变量先保存),再运算处理。
回复 使用道具 举报
hxc2008q 来自手机 初级黑马 2012-2-18 02:12:45
14#
同问八楼那个能用吗
回复 使用道具 举报
a = a-b
b = a+b
a =b-a
回复 使用道具 举报
思想 都差不多 就看你想用哪个了。。。
回复 使用道具 举报
黄秋 发表于 2012-2-15 19:40
LS, 这语句我刚从往届同学的帖子看到,就给你贴出来了。想了想,稍作修改,得:
a = b+(b = a)-a; ...

这个语句的执行有点奇怪,b+(b = a)-a执行顺序是从左向右执行,这就与括号的优先级最高相矛盾了,如果真是先执行括号中赋值语句b=a的话 结果就不对了,这就是矛盾的地方
回复 使用道具 举报
(1)先加后减
a = a+b
b = a-b
a = a-b
(2)先减后加
a = a-b
b = a+b
a =b-a
(3)先乘后除 注意精度
a = a*b
b = a/b
a = a/b
(4)先除后乘 注意精度
a = a/b
b = a*b
a = b/a
(5)异或
a = a^b
b = a^b
a = a^b
(6)再来一条搞笑的,说明了数学上有几种可逆运算就有几种不用三方变量的方法
a = a的b次方
b = a开b次方
a = log(b底) a(真数)
回复 使用道具 举报
都是精英啊{:soso_e179:}
回复 使用道具 举报
黄秋 黑马帝 2012-2-15 19:40:57
8#
LS, 这语句我刚从往届同学的帖子看到,就给你贴出来了。想了想,稍作修改,得:
a = b+(b = a)-a;
回复 使用道具 举报
冯祖焱 黑马帝 2012-2-15 18:57:40
7#
本帖最后由 冯祖焱 于 2012-2-15 19:02 编辑

一条语句交换数值
  1. a = b + (b = a) * 0;
复制代码
回复 使用道具 举报
本帖最后由 靖美专 于 2012-2-15 15:34 编辑

java语言提供的异或运算就可以实现这样的操作。例子如下
public static void main(String[] args) {
   int A=2,y=6;
     A=A^B;
     y=A^B;
    A=A^B;
     System.out.println("A="+A+" "+"B="+B);

}

请楼主把其他方法分享啊

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
交换位置
a=a*b;
b=a/b;
a=a/b;
回复 使用道具 举报
交换a,b
a=a+b;//把两个数的和付给a
b=a-b;//和减b的值等于a的值付给b;
a=a-b;//和减现在的b也就是原来的a,得到原来b的值付给a

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
交换a,b
a=a-b;
b=b+a;
a=b-a;

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
感觉楼主在纠结。。。

就像你去你女朋友家,直接去做公交可以,或者先去火车站坐火车也可以,还可以去机场从哪里去哪里再去你女朋友家。。。

两个数交换位置。。。效率第一的是异或操作。。

但是在Java中不是不能用,最主要的是Java是面向对象,如果你使用异或操作就是面向过程了,所以最好使用第三方变量。
可以体现出面向对象的思想。。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马