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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 bullfrog 于 2014-9-2 12:54 编辑

看到有几个贴子提到交换变量值的问题:
比如两个String类型的变量a, b,想用调用函数的方式交换a, b所表示的字符串;
或者任意类型T的两个变量a, b;交换他们所引用的两个对象;

用下面的泛型方法应该是可以做到的。
  1. public class  tmp
  2. {
  3.                 public static void main(String[] args)throws Exception
  4.                                 {
  5.                                         Test a = new Test();
  6.                                         Test b = new Test();
  7.                                         System.out.println("a:::"+a+"....b:::"+b); //a, b在交换之前的值。
  8.                                        
  9.                                         /*
  10.                                         下面这一行比较重要,做的是b=a; a=b;这两个赋值动作。
  11.                                         相当于先把b的原始值传递给形式参数E x;
  12.                                         然后将a的原始值赋值给b,再将此时b的值,
  13.                                         也就是a的原始值赋值给形式参数 E y;
  14.                                         最后将函数的返回值,即b的原始值赋给a;
  15.                                         */
  16.                                         a = swap(b, b=a);
  17.                                        
  18.                                         System.out.println("a:::"+a+"....b:::"+b); //a, b在交换后的值。
  19.                                 }

  20.                                 public static <E> E swap(E x, E y)
  21.                                         {
  22.                                                 return x;
  23.                                         }
  24. }

  25. class Test
  26. {}
复制代码

但是如果a, b两个变量的类型不一样,就不知道怎么做了。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马