其实一切类型的参数传递都是拷贝,所谓的传值只是针对java中的基本类型,而传递的地址只是针对非基本类型(string有点特殊)
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "123";
String str2 = "123";
StringBuffer sb = new StringBuffer("123");
Main main = new Main();
main.changeString(sb);
System.out.println(sb);
}
public void changeString(StringBuffer str) {
//只是将拷贝的地址复制为空,然后上面的输出不会为空
// str = null;
StringBuffer st=str;
//对拷贝地址的值进行了操作,由于拷贝地址的值和原对象的地址是相同的,所以当前对象所指向的变量值是同一个
st.append("21");
}
http://freej.blog.51cto.com/235241/168676/