扎克埃夫隆现任女友:关于java的函数调用~~

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:08:44
很弱很弱的一个问题:
public class TestRef2 {
public static void test(String str) {
str = new String(", World!");
}
public static void main(String[] args) {
String string = new String("Hello");
test(string);
System.out.println(string);
}
}

为什么会输出hello?有什么办法能让java向c++那样按引用调用吗?

因为在JAVA里String是一个静态类,如果不给它重新引用新的值它是不会发生任何变化的,而且在参数传递方面是属于值传递而非引用传递。
因此你的那个string其实还是main(<para>)中的引用没有发生变化,如果你这样写就变化了:
public class TestRef2 {
public static String test(String str) {

str=new String(",World");
return str;

}

public static void main(String [] args) {

String string="Hello";//或者String string=new String("Hello");

string=test(string);

System.out.println(string);
}
}

即需要给string重新赋值才能真正对string的引用做改变

你可以把str做成test里面得一个实例

将string的类型从String改为StringBuffer试试