首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

帮忙解释一下吧 ,详细一点,关于StringBuilder类型的,详情请进.该怎么解决

2012-06-03 
帮忙解释一下吧 ,详细一点,关于StringBuilder类型的,详情请进.import java.io.*import java.io.InputStre

帮忙解释一下吧 ,详细一点,关于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的区别,有很多文章,这个是基础性的,建议自己动手查查资料。

热点排行