在給定的代碼中,'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