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);
}
}
}
当然,也可以不通过自定义对象而用数组来做,方法也类似的.
我也觉得太麻烦了些,希望能有更好的办法.
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);
}
}
}
当然,也可以不通过自定义对象而用数组来做,方法也类似的.
我也觉得太麻烦了些,希望能有更好的办法.
解决方案 »
- JTable加带复选框的行
- runtime与外部应用程序交互的问题
- java中行连接的问题!
- Graphics是在何处被实例化?对于windows版jdk来说,DrawLine等操作是在何处实现?
- 关于java值传递方面的疑问,请高人分析一下内存中的变化,为什么2个结果的值不同
- 这个关于分配律的算法问题该怎么解决?
- 关于java的安装问题
- 小弟跪求一个ubb正则,希望大大们帮忙....在线等
- 谁给我下载或上传rowset.jar文件给我呢?到sun网站我下载不了
- 好久不来了,今儿高兴,散分。(前十位)
- 运行JAVA小程序时要用到html文件,请问html有专门的编译器吗?
- 简单问题:怎样类型Byte[]与类型byte[]相互转换?
{
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);
}
}