关于StringBuffer 的一个问题`

no9988 2008-06-02 08:02:34
public class Test{
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
public static void operate(StringBuffer x, StringBuffer y){
x.append("a");
y.append("b");
}
}
这个输出是: Aa,Bb

但换成这句后
public static void operate(StringBuffer x, StringBuffer y){
y=x;
x.append(y);
}
为什么输出的是: AA,B

不能理解,望高手指点```
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobor_2008 2008-09-23
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080509/20/5f9abbb6-cb46-4029-9f3f-bc95c1b165f9.html

==============================================

这是我以前发的,你看看吧.
forerver121 2008-06-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 linyanbo 的回复:]
public static void operate(StringBuffer x, StringBuffer y){
y=x;
x.append(y);
}
[/Quote]这个地方你把穿进来的x值赋给Y了...你打印出来的值就是x的值..而不是y的值了
tangzililiang 2008-06-07
  • 打赏
  • 举报
回复
莫非lz认为还有其他结果,呵呵。。。
shenzhen_mydream 2008-06-05
  • 打赏
  • 举报
回复
public static void operate(StringBuffer x, StringBuffer y){
y=x;
x.append(y);
}
这里只是把x的值赋给y了,所以此时y的只也是"A"了,两个"A"加起来就是"AA"了,但y还是指向b的引用,所以b的值是不会变的
libo_xigua 2008-06-04
  • 打赏
  • 举报
回复
全局变量与局部变量的问题,建议楼主补习一下
linyanbo 2008-06-04
  • 打赏
  • 举报
回复
public static void operate(StringBuffer x, StringBuffer y){
y=x;
x.append(y);
}
这个方法 y=x,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。
要改变b所指向的对象的值 只能用方法来改变 比如y.append("b");
berlou 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 believesun 的回复:]
引用没理解好
[/Quote]

问题的关键是“引用“这个概念本身不是很容易理解, 其实我觉得这个很容易理解, 因为参数本身就是一个局部变量,这个是关键。
jiyingt036 2008-06-03
  • 打赏
  • 举报
回复
楼主认为出现的结果是?
believesun 2008-06-02
  • 打赏
  • 举报
回复
引用没理解好
zhouzongxi 2008-06-02
  • 打赏
  • 举报
回复
stringbuffer 是引用类型的
产生AA,B的原因要考虑到局部变量和全局变量的区别 如果你在Y=x;这里来句话System.out.println(y);
你就知道了 打印的y是A ,但是出了这个作用域 就没了
huayiluo 2008-06-02
  • 打赏
  • 举报
回复
public static void operate(StringBuffer x, StringBuffer y){
y=x;//B=A以时,两个都是A
x.append(y);//A+A=AA
}
jdlsfl 2008-06-02
  • 打赏
  • 举报
回复
关键是这句y=x;
执行这句后,y变成一个局部变量了,跟传进来的b没有关系了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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