想通过函数参数传回值,该怎么办?

SwordMan2001 2004-05-07 12:45:27
在C++中,可以通过引用型(&)参数回传参数值,从而有多个值要返回时用起来很方便,例如:
bool GetValue(int id, int& val1, int& val2)
{
if (id<=0) return false;
val1=100;
val2=200;
return true;
}

而在JAVA中却没有类似的机制,请问该怎样做才能将参数的值回传?
...全文
220 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigBangBug 2004-05-08
  • 打赏
  • 举报
回复
对大量的数据用vector包装吧,
flamingo2001 2004-05-07
  • 打赏
  • 举报
回复
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);
}
}
}
当然,也可以不通过自定义对象而用数组来做,方法也类似的.
我也觉得太麻烦了些,希望能有更好的办法.
flamingo2001 2004-05-07
  • 打赏
  • 举报
回复
或者用数组像这样回传参数:

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);
}
}
无欲则钢 2004-05-07
  • 打赏
  • 举报
回复
可以通过对象的引用。
无欲则钢 2004-05-07
  • 打赏
  • 举报
回复
可以通过对象的引用。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧