日期:2014-05-20  浏览次数:20560 次

帮忙解释一下吧 ,详细一点,关于StringBuilder类型的,详情请进.
import java.io.*;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args)
{
StringBuilder str=new StringBuilder("ABC");
System.out.println(str);
AddStr(str);
System.out.println(str);
}
private static void AddStr(StringBuilder str)
{
str=str.append("ZXC");
}
}

为什么第二次输出是ABCZXC,似乎StringBuilder是什么引用类型,但是详细的不大清楚,有人能帮我详细的说一下吗?谢谢了.

------解决方案--------------------
这个事引用类型, 也就是说在方法main中给StringBuilder的缓存添加了"ABC", 然后传给AddStr方法, 传的是引用而不是一个复制品. 修改AddStr中的StringBuilder也就修改了main中的StringBuilder. 所以调用add("ZXC"), 结果就变成了ABCZXC
------解决方案--------------------
画图会清楚一点. 楼主可以查看一些视频教程, 譬如斯坦福大学的公开课<<编程方法论>>
------解决方案--------------------
StringBuilder是一个对象,这跟普通对象是一样的。你先实例化类一个StringBuilder然后将其引用传递下去。那么在addStr中无论你是否重新给str赋值都会得到上述结构。也就是 str=str.append("ZXC")和直接str.append("ZXC")是一样的。

欢迎访问我的博客:
[/url]http://blog.csdn.net/lb85858585

------解决方案--------------------
传递的是地址(引用),所以对其后续的修改也会影响到之前的实例。
------解决方案--------------------
楼主在google搜一下,String,StringBuffer的区别,有很多文章,这个是基础性的,建议自己动手查查资料。