检查此代码
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 我传递了两个对象字符串和字符串生成器。String 是按值传递的,但 StringBuilder 看起来像是通过引用传递,而调用方法的 StringBuilder 对象发生了变化。