a 和 k都是reference,
a指向"aaa",
调用swap方法,形参k被付值a,也指向"aaa",
接着k=new stringbuffer("ccc"),
k指向了"ccc",a的值不变,
所以输出"aaa"

解决方案 »

  1.   

    swap(a)将a("aaa"的地址)做一备份赋给k, 在swap()中k被指向新地址("ccc"的地址),你说a是会变吗?
      

  2.   

    stringbuffer a= new stringbuffer();
    a不是对象吗?对象传递不是传址吗?
      

  3.   

    k=new stringbuffer("ccc")改为k.replace(0,3,"ccc");因为k=new stringbuffer("ccc")后 k指向了新的地址,而没有影响a;