我不明白为什么System.out.println(name)输出Sam时,并没有被该方法的concat函数所影响,而System.out.println(names)则因该方法的append函数输出Sam4。为什么StringBuilder会受到影响而String却不会呢?通常,在对象引用上调用方法会影响调用者,所以我不明白为什么String类型的结果保持不变。谢谢!
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
}