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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 1961993790 于 2013-10-25 08:55 编辑

怎样实现 int a = 3,b = 5; 两个数的交换,不使用第三方便量。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

10 个回复

倒序浏览
一个值被^两次后还是原来的值.
a = a^b;
b = a^b;这里相当于a^b^b;结果是a;
a = a^b;这里相当于a^b^a^b^b;

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
方法很多。你可以使用位运算,简单的算术运算的方法.
这是使用简单的算术运算的方法
int a,b;  
a=b-a;  
b=b-a;
a=b+a;

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
嗯。可以这样a=a+b
                  b=a-b
                  a=a-b

然后还可以异或运算a=a^b
                           b=a^b
                           a=a^b

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
毕老师课上不是讲到了么 异或。
a= a^b;
b=a^b;
a=a^b;
回复 使用道具 举报
  1. public class Demo {
  2.    public static void main(String [] agrs){
  3.           int m=2,n=3;
  4.           //method_1(m, n);
  5.           // method_2(m, n);
  6.           method_3(m, n);
  7.    }
  8.    /**
  9.     * 使用异或^
  10.     *明白一个数,如果异或同一个数两次,那么就等于本身
  11.     */
  12. private static void method_3(int m, int n) {
  13.         m=m^n;
  14.           n=m^n;
  15.           m=m^n;
  16.           System.out.println("m="+m+"\tn="+n);
  17. }
  18.    /**
  19.     * 使用自身的数组,加减运算
  20.     */
  21. private static void method_2(int m, int n) {
  22.         m=m+n;
  23.            n=m-n;
  24.            m=m-n;
  25.            System.out.println("m="+m+"\tn="+n);
  26. }
  27. /**
  28. * 利用中间变量
  29. */
  30. public static void method_1(int m, int n) {
  31.         int t=m;
  32.           m=n;
  33.           n=t;
  34.           System.out.println("m="+m+"\tn="+n);
  35. }
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 doitforyou 于 2013-10-24 00:03 编辑

楼上的方法都是对的,我只是提供下简写方法:
a = b+(b=a)-a;
这种方法主要根据运算的优先级来实现的,经过代码验证,希望能帮助你。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
冯超 高级黑马 2013-10-24 08:28:34
8#
java没有指针
在内存中
a     ------------------>3
b    ------------------->5
要使得a指向5这个常量有两种方式,1.a = 5,则a指向3的那个引用就自动消失; 2 a = b 则a和b同时指向5的这个引用,
           但是如何让b指向3(变量)这个引用了,就需要一个标记,这个标记指向3,所以需要第三个变量。
我想不通你为什么会问这个问题了? 用第三个变量是很好的一个思路。楼上的哥们帮你解决的方法我觉得并不可取。
回复 使用道具 举报
乔兵 高级黑马 2013-10-25 08:20:58
9#
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
方法一:
a = a + b;
b = a - b;
a = a - b;
方法二:
a = a * b;
b = a / b;
a = a / b;
方法三:
a = a ^ b;
b = a ^ b;
a = a ^ b;
回复 使用道具 举报
伊利 中级黑马 2015-10-31 23:13:07
11#
66666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马