首页 新闻 搜索 专区 学院

StringBuffer的问题

0
[待解决问题]

public class Mytest2 {

  public static void main(String[] args) {

    StringBuffer a = new StringBuffer("A");

    StringBuffer b = new StringBuffer("B");

    Operater(a, b);

    System.out.println(a + "  " + b);

  }

 

  public static void Operater(StringBuffer x, StringBuffer y) {

    x.append(y);

    y = x;

  }

}

//这个输入结果是:AB    B

//原理怎么解释啊?

//但是当在operater(a,b);打断点后,并观察x.append(y)的值时,结果会出现变动经常不一样!在eclipse下

自由不死的主页 自由不死 | 菜鸟二级 | 园豆:204
提问于:2016-07-26 23:36
< >
分享
所有回答(3)
0

a的引用被传入方法中,被添加了一个字符串"B",a的引用指向的值是"AB",y=x是把a的引用赋给了b,但是由于方法的运行是在栈中,一旦弹栈,就会被销毁,所以mian方法中的b的引用还是原来的那个,所以会输出AB    B的结果.

自由不死 | 园豆:204 (菜鸟二级) | 2016-07-27 00:18

如果把Operater方法改成返回y,然后在main方法里面用b接收,那么b的值应该会改变成A吧

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-07-28 16:21
0

mian方法中的b的引用还是原来的那个

小熊vs | 园豆:20 (初学一级) | 2016-07-27 09:12
0

应该是栈和堆得知识吧

类似这样:

clarlespeng | 园豆:469 (菜鸟二级) | 2016-07-27 09:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册