其实一切类型的参数传递都是拷贝,所谓的传值只是针对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/
本文探讨了Java中参数传递的本质,即所有参数传递都是通过拷贝实现的。文章通过具体示例解释了基本类型与引用类型在传递过程中的区别,并展示了如何通过修改引用类型的内部状态来影响原始对象。

被折叠的 条评论
为什么被折叠?



