Topic: 请教方法返回多个元素问题

  Print this page

1.请教方法返回多个元素问题 Copy to clipboard
Posted by: lou_nj
Posted on: 2006-04-04 16:42


public boolean name(int a,int b,int c,int d) throws AppException {
boolean flag = false;

try {
c=a+b;
d=a*b;
flag = true;
} catch (Throwable t) {
handleException(t);
}
return flag;
}

int a=1;int b=2;
int c;int d;
name(a,b,c,d);

a,b是已经变量,通过方法得到c,d的值,怎样才能把c,d的值返回;谢谢!

2.Re:请教方法返回多个元素问题 [Re: lou_nj] Copy to clipboard
Posted by: arroyo
Posted on: 2006-04-05 11:19

java方法的参数是值传递,无法实现通过传参的的方式来改变参数的值

3.Re:请教方法返回多个元素问题 [Re: lou_nj] Copy to clipboard
Posted by: Jcat
Posted on: 2006-04-05 12:30

1.基本类型作为参数传递时,是传递值的拷贝。(即,无论你怎么改变这个拷贝,原值是不会改变的)
class Test1
{
public static void main(String[] args)
{
int n = 3;
System.out.println("Before change, n = " + n);
changeData(n);
System.out.println("After changeData(n), n = " + n);
}

public static void changeData(int nn)
{
nn = 10;
}
}


2.在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。(即,把对象的引用传递过去,如果引用在方法内被改变了,那么原对象也跟着改变)
class Test2
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer("Hello ");
System.out.println("Before change, sb = " + sb);
changeData(sb);
System.out.println("After changeData(n), sb = " + sb);
}

public static void changeData(StringBuffer strBuf)
{
strBuf.append("World!");
}
}


3.new操作符操作成功后总会在内存中新开辟一块存储区域。(即,由于sb和strBuf中存放地址不一样了,所以虽然strBuf指向的内存中的值改变了,但sb指向的内存中值并不会变)
class Test3
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer("Hello ");
System.out.println("Before change, sb = " + sb);
changeData(sb);
System.out.println("After changeData(n), sb = " + sb);
}

public static void changeData(StringBuffer strBuf)
{
strBuf = new StringBuffer("Hi ");
strBuf.append("World!");
}
}


另外,String类是个特殊的类,对它的一些操作符是重载的,如:
String str = “Hello”;   
等价于
String str = new String(“Hello”);
String str = “Hello”;

str = str + “ world!”;
等价于
str = new String((new StringBuffer(str)).append(“ world!”));

所以,String对象和基本类型一样,一般情况下作为参数传递,在方法内改变了值,而原对象是不会被改变的。

以上内容整理自http://www.javaeasy.com/ArticleShow.asp?ArticleID=172&ArticlePage=1
原文作者:yuanmeng163 出处:CSDN


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923