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

Engine_Start 2012-05-31 11:22:07
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是什么引用类型,但是详细的不大清楚,有人能帮我详细的说一下吗?谢谢了.
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
柳波 2012-06-01
  • 打赏
  • 举报
回复
StringBuilder是一个对象,这跟普通对象是一样的。你先实例化类一个StringBuilder然后将其引用传递下去。那么在addStr中无论你是否重新给str赋值都会得到上述结构。也就是 str=str.append("ZXC")和直接str.append("ZXC")是一样的。

欢迎访问我的博客:
[/url]http://blog.csdn.net/lb85858585
brightyq 2012-06-01
  • 打赏
  • 举报
回复
楼主在google搜一下,String,StringBuffer的区别,有很多文章,这个是基础性的,建议自己动手查查资料。
ThinkCat 2012-06-01
  • 打赏
  • 举报
回复
传递的是地址(引用),所以对其后续的修改也会影响到之前的实例。
ssd189 2012-05-31
  • 打赏
  • 举报
回复
画图会清楚一点. 楼主可以查看一些视频教程, 譬如斯坦福大学的公开课<<编程方法论>>
ssd189 2012-05-31
  • 打赏
  • 举报
回复
这个事引用类型, 也就是说在方法main中给StringBuilder的缓存添加了"ABC", 然后传给AddStr方法, 传的是引用而不是一个复制品. 修改AddStr中的StringBuilder也就修改了main中的StringBuilder. 所以调用add("ZXC"), 结果就变成了ABCZXC

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧