1
下面是让我困惑的程序。以下程序的输出是JAVA String vs StringBuffer
The USA
main USA
如果我更换所有字符串的StringBuffer然后我得到 "The USA main The USA"
。请帮我理解这一点。
public class Confusing {
public static void sss(String s1){
s1= "The "+s1;
System.out.println(s1);
}
public static void main(String args[]){
String s1 = new String("USA");
sss(s1);
System.out.println("main "+s1);
}
}
在'String'情况下,'sss'修改's1'只在'sss'的范围内。如果你使用'StringBuffer',你可以在'StringBuffer'中添加一些东西......这里的关键字是Java中'String'的不变性...... –
好吧如果我把它作为“The”+ s1;而不是s1 =“The”+ s1;那么我们可以说它是由于不可变性。无论如何,我只在StringBuffer和String情况下传递参考“s1”。我仍然感到困惑。 – keyanwb
但是你给StringBuffer对象添加了一些东西(我想是.append)。因为您只传递对该对象的引用,所以此更改也在'main'中可见。 –