我不明白为什么的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