JAVA中参数传递方式类似C++中的指针传值(注意不是传址),无法直接通过参数返回,但可以构成对象来回传值,我是这么做的:import java.net.*;
import java.io.*;class ArgObj
{
Object obj=null;
public ArgObj(Object _obj){
obj=_obj;
}
public ArgObj(int _i){
obj=new Integer(_i);
}
public ArgObj(long _i){
obj=new Long(_i);
}
}class Test
{
public static void swap(ArgObj arg1, ArgObj arg2){
Object tmp=arg1.obj; arg1.obj=arg2.obj; arg2.obj=tmp;
} public static void main(String args[]) throws Exception{
{
String s1="hello", s2="world";
System.out.println("s1=" + s1 + ", s2=" +s2);

ArgObj arg1=new ArgObj(s1), arg2=new ArgObj(s2);
swap(arg1, arg2);
s1=(String)arg1.obj; s2=(String)arg2.obj;//手工传回值 System.out.println("s1=" + s1 + ", s2=" +s2);
} {
int n1=1000, n2=2000;
ArgObj arg1=new ArgObj(n1), arg2=new ArgObj(n2);
swap(arg1, arg2);
n1=((Integer)arg1.obj).intValue(); n2=((Integer)arg2.obj).intValue();
System.out.println("n1=" + n1 + ", n2=" + n2);
}
}
}
当然,也可以不通过自定义对象而用数组来做,方法也类似的.
我也觉得太麻烦了些,希望能有更好的办法.

解决方案 »

  1.   

    或者用数组像这样回传参数:class Test
    {
    public static void swap(String arg1[], String arg2[]){
             //数组只用第一个元素
    String tmp=arg1[0]; arg1[0]=arg2[0]; arg2[0]=tmp;
    }

    public static void main(String args[]) throws Exception{
    String s1="hello", s2="world", arg1[]={s1}, arg2[]={s2};
    System.out.println("s1=" + s1 + ", s2=" +s2);
    swap(arg1, arg2);
    s1=arg1[0]; s2=arg2[0];//将传回的参数值赋给原变量
    System.out.println("s1=" + s1 + ", s2=" +s2);
    }
    }
      

  2.   

    对大量的数据用vector包装吧,