在给定的代码中,'s'是类String的对象。 当我们将's'传递给一个函数时,会创建一个s的副本,它将指向同一个字符串。 但即使如此,该函数所做的更改过法1这样做,但我们去的时候用的方法也越来越体现在没有得到反映2.在java中使用字符串
方法1:
class ST{
public static void main (String[] args) {
String s="Test";
change(s);
System.out.println(s);
}
static void change(String s)
{
s=s+"test";
}
}
方法2:
class ST{
public static void main (String[] args) {
String s="Test";
s=change(s);
System.out.println(s);
}
static String change(String s)
{
return s+"test";
}
}
我的问题是,如果每次创建原始引用的副本时,它也指向同一个字符串,那么为什么方法一会失败?
我看不出有任何的问题在这里。 –
方法1正在改变本地作用域变量's'来指向一个字符串的新实例。一旦退出该功能,该新字符串将被丢弃。原始变量's'仍然指向原始字符串'Test'。 一旦超出方法范围,返回'main'没有任何改变。方法2将'main'的变量's'设置为函数调用的结果,从而将's'改为指向一个新的字符串。 –
这里的商店refrence和参考文献中作出的变化应该反映在......只是问。 – user8542418