A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class StringTest {
        //牢记String是不可变类
        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 a,StringBuffer b){
          a=a.append(b);
        b=a;
  }
}
输出结果:AB:A
图是自己画的!!!


3 个回复

倒序浏览
首先结果楼主打错了

方法部分b=a是改变了指向 但是并没有返回,所以没有用。
但是append不一样,当a=a.append(b)的时候,这个时候单一的字符串A就不在了,变成了AB了,所以原来的a的指向没变,只是指向的对象变了。

测试了以下代码
                StringBuffer a=new StringBuffer("A");
                 System.out.println(a.hashCode());
                StringBuffer b=new StringBuffer("B");
                      operate(a,b);
                      
                System.out.println(a+":"+b);
                System.out.println(a.hashCode());
结果:
366712642
AB:B
366712642
回复 使用道具 举报
我画的就是a没变,指向的对象的内容变为了AB,仔细看一下,可能我画的看着有点歧义,只是为了方便展示append();之后对象的内容。
回复 使用道具 举报
大家都看看相互理解一下吧,再交流探讨一下,这个知识点挺不错的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马