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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学过C或C++的同学,都知道,要在方法中实现两个数的交换,可以使用指针来解决,数据没有实现交换的问题。
但是,java中没有指针的概念,那我们有没有办法,将交换数据的实现写在方法中那。,,通过百度,好多人都说:java不好能将交换写在方法中,,,不过有一个人,说可以借助类的成员变量,来实现。对于我这个有点强迫症的人来说,觉得本应该很简单的问题,居然没能解决出来。所以破解的找到解决办法:我通过测试:结果真的通过类 实现了两个数的交换(我是个初学者,不知道自己写的方法正不正确,算不算用方法试下那两个数的交换,还请高数,给出评价,,最好给出一更好的解释,,,当然初学者也可以发表自己的看法)代码如下(包括四种实现两个数据交换的方法):

  1. public class Test {
  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 int a=10;
  8.                 int b=20;
  9.                 //将数值赋值给对象的成员变量
  10.                 Num n=new Num(a,b);
  11.             MethodO(n);
  12.                 //MethodT(a, b);
  13.                 //MethodTH(a, b);
  14.                 //MethodF(a, b);
  15.         //输出的时候一定要输出:对象中的成员变量
  16.                 System.out.println("a:"+n.a+",b:"+n.b);
  17.         }
  18.         //方式一:采用第三方变量
  19.         public static void MethodO(Num n){
  20.                 int c=n.a;
  21.                 n.a=n.b;
  22.                 n.b=c;
  23.         }
  24.         //方法二:异或运算符
  25.         public static void MethodT(Num n){
  26.                 n.a=n.a^n.b;
  27.                 n.b=n.a^n.b;//a^b^b=a
  28.                 n.a=n.a^n.b;//a^b^a=b
  29.         }
  30.         //方法三:小学加减法
  31.         public static void MethodTH(Num n){
  32.                 n.a=n.a+n.b;
  33.                 n.b=n.a-n.b;
  34.                 n.a=n.a-n.b;
  35.         }//方法四:一句搞定
  36.         public static void MethodF(Num n){
  37.                 n.a=n.a+n.b-(n.b=n.a);
  38.         }
  39.        
  40. }
  41. class Num{
  42.         int a;
  43.         int b;
  44.         public Num(int a, int b) {
  45.                 super();
  46.                 this.a = a;
  47.                 this.b = b;
  48.         }
  49.        
  50.        
  51. }
复制代码



期盼大家积极讨论、有问题提出批评、建议,我再进行改正

2 个回复

倒序浏览
一般开发都是用 那个采用三方变量的. 而面试时候有可能让你用异或运算符的
回复 使用道具 举报
龙sama 来自手机 中级黑马 2015-12-13 21:14:54
藤椅
异或运算,加减运算不定义新的变量会考到。用的时候还是定义第三个变量交换最舒服。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马