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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zero727 于 2013-5-2 08:56 编辑
  1. class Mol
  2. {
  3.         public static void main(String[] args)
  4.         {

  5.                 //定义三个变量
  6.                
  7.                 int a=9;
  8.                 int b=10;
  9.                 //int c=a;
  10.         
  11.                 System.out.println(a);
  12.                 System.out.println(b);


  13.                 /**c=a; 第一种方法
  14.                 a=b;
  15.                 b=c;
  16.         
  17.                 b=a+b;第二种方法
  18.                 a=b-a;
  19.                 b=b-a;
  20.                 */

  21.                 //a=b;
  22.                 //b=c;
  23.                 a=a^b;//x    a=a^b^b  第三种方法
  24.                 b=a^b;
  25.                 a=a^b;

  26.                 System.out.println(a);
  27.                 System.out.println(b);
  28.                


  29.         }

  30. }
复制代码

点评

磊哥给你加分了,哈哈,继续加油!不懈努力!达成所愿  发表于 2013-5-1 21:40

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

10 个回复

倒序浏览
尹桥印 发表于 2013-5-1 20:42
毕老师只介绍了三种,还是第一种好用,更容易想到,其他两种都各有各的缺点 ...

嗯嗯 我也觉得第一个好点,嘿嘿 谢谢啊  加油!
回复 使用道具 举报
  1. package q_2013_03_23;

  2. public class SwapDemo {

  3.      public static void main(String[] args) {
  4.          
  5. //        两个数交换
  6.          swap5(3,5);
  7.          
  8.      }
  9.      
  10. //    第三方临时变量-temp
  11.      public static void swap1(int a,int b){
  12.          
  13.          System.out.println("a="+a+":"+"b="+b);
  14.          int temp;
  15.          temp = a;
  16.          a = b;
  17.          b = temp;
  18.          System.out.println("a="+a+":"+"b="+b);
  19.      }
  20.      
  21. //    不用第三方临时变量-用加减-多行代码
  22.      public static void swap2(int a,int b){//a=3 b=5
  23.          System.out.println("a="+a+":"+"b="+b);
  24.          a = a + b;// a=a+b=3+5=8, b=b=5
  25.          b = a - b;// b=8-5=3
  26.          a = a - b;// a=8-3=5
  27.          System.out.println("a="+a+":"+"b="+b);
  28.      }
  29.      
  30. //    不用第三方临时变量-用异或-多行代码-效率高
  31.      public static void swap3(int a,int b){//a=3 b=5 a=00000011 b=00000101
  32.          System.out.println("a="+a+":"+"b="+b);
  33.          a = a ^ b;//a = 00000110,b=00000101
  34.          b = a ^ b;//b = 00000011=3, a = 00000110   
  35.          a = a ^ b;//a = 00000101=5
  36.          System.out.println("a="+a+":"+"b="+b);
  37.      }
  38.      
  39. //    用一行代码实现交换,用加减
  40.      public static void swap4(int a,int b){
  41.          System.out.println("a="+a+":"+"b="+b);
  42.          b=a+b-(a=b);//b=3-(a=2)=1 //用一行代码实现交换
  43.          //或者a=b+a-(b=a);
  44.          System.out.println("a="+a+":"+"b="+b);
  45.      }
  46.      
  47. //     用一行代码实现,异或
  48.      public static void swap5(int a,int b){//a=3,b=5
  49.          System.out.println("a="+a+":"+"b="+b);
  50.          a = a^b^(b=a);//a=5,b=3
  51.          System.out.println("a="+a+":"+"b="+b);
  52.          b = b^a^(a=b);
  53.          System.out.println("a="+a+":"+"b="+b);
  54.      }
  55.          
  56. }
复制代码
回复 使用道具 举报
一行代码实现交换:
  1. public class OneLineSwap
  2. {
  3.      public static void main(String[] args)
  4.      {
  5.          //一、用加减一行代码实现两个数的交换
  6.          int a = 3;
  7.          int b = 4;
  8.          System.out.println("交换前:"+"a = "+a+":"+"b = "+b);
  9.          a = a+b-(b=a);
  10.          //或b =a+b-(a=b);
  11.          //或b = a-b+(a=b);
  12.          System.out.println("交换后:"+"a = "+a+":"+"b = "+b);
  13.          System.out.println("==================");
  14.          //二、用异或一行代码
  15.          int x = 5;
  16.          int y = 8;
  17.          System.out.println("交换前:"+"x = "+x+":"+"y = "+y);
  18.          x = x^y^(y=x);
  19.          //或y = x^y^(x=y);
  20.          System.out.println("交换后:"+"x = "+x+":"+"y = "+y);
  21.      }
  22.      
  23. }
复制代码
回复 使用道具 举报
顶一个上楼,不错,学习了。
回复 使用道具 举报
我说一句吧,你也别放心上,其实这些东西有三个就够了,不用那么多,钻这些牛角尖没意思,还是把精力放在重点上好点,个人意见
回复 使用道具 举报
江大海 发表于 2013-5-1 23:07
我说一句吧,你也别放心上,其实这些东西有三个就够了,不用那么多,钻这些牛角尖没意思,还是把精力放在重 ...

嗯嗯    知道啦!只是刚刚讨论时不解  嘿嘿  谢啦  
回复 使用道具 举报
hacket 发表于 2013-5-1 22:58
一行代码实现交换:

花了一会才看懂  谢谢你的回复!膜拜啊~:P
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
zero727 发表于 2013-5-2 00:23
花了一会才看懂  谢谢你的回复!膜拜啊~

:handshake一起学习学习。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马