我不明白爲什麼的System.out.println(名稱)輸出山姆而不受該法的concat函數,而的System.out.println(名)輸出Sam4作爲該方法的追加方法的結果。爲什麼StringBuilder會影響而不是String?通常情況下,對對象的引用調用方法會影響調用者,所以我不明白爲什麼字符串結果保持不變。在此先感謝傳遞由值(StringBuilder的字符串VS)
public static String speak(String name) {
name = name.concat("4");
return name;
}
public static StringBuilder test(StringBuilder names) {
names = names.append("4");
return names;
}
public static void main(String[] args) {
String name = "Sam";
speak(name);
System.out.println(name); //Sam
StringBuilder names = new StringBuilder("Sam");
test(names);
System.out.println(names); //Sam4
}
很多答案在這裏,基本上都說同樣的事情。很難選擇一個來upvote :) –
@ArnaudDenoyelle幸運的是,你不需要只選擇一個;) –
@ArnaudDenoyelle作爲馬克Rotteveel說,海琳娜是誰必須作出艱難的選擇;) – Karthik