检查这个代码为什么StringBuilder的参照像个通
public class StringbuilderDoubt {
public static void main(String args[]){
new StringbuilderDoubt().methodTest();
}
public void methodTest(){
String str=new String("Default");
StringBuilder sb=new StringBuilder();
sB1(str,sb);
sB2(str,sb);
System.out.println(str+".........."+sb);
}
private void sB1(String str1, StringBuilder sb1){
str1+="str1";
sb1.append("sB1");
}
private void sB2(String str2, StringBuilder sb2){
str2+="str2";
sb2.append("sB2");
}
}
输出是:Default..........sB1sB2
为什么StringBuilder的工作就像通过引用传递? 在methodTest中,我传递了两个对象字符串和字符串生成器。字符串是按值传递的,但StringBuilder看起来像通过refence和StringBuilder对象从调用方法变得更改。
字符串是不可变的。 – mre 2013-02-11 17:40:37
您正在传递对StringBuilder类_by value_的实例的引用。 Java总是使用按值传递语义。您可以修改传递引用的对象的事实与传递值与传递引用无关。 – GriffeyDog 2013-02-11 20:45:13