首先,s和s2分两回定义,一次是类的私有变量,一次是test函数的参变量。关键是在s2=s;时,类的私有变量被赋值给s2,
所以s2.append("hah");执行时就是给类的私有变量赋值。
结果就是goodhah了。

解决方案 »

  1.   

    对不起,我还是不懂,而且你的解释似乎也有问题啊,打印的结果s2是bad啊,而s是goodhah,我还是不明白,请指教。麻烦了
      

  2.   

    看你发的StringBuffer那个贴,给你答案了!
    明白了吗?
      

  3.   

    如果对C/C++的指针比较熟悉就好理解了。
    语句: s2=s;//3
    说明:s2 指向同样的 s 地址。以后s2内容的改变,将不影响main中的 s2。语句: s=new StringBuffer("new");//4 
    说明:s指向新的地址,s, s2地址不同。语句: s2.append("hah");//8
    说明:改变main中的 s。
      

  4.   

    StringBuffer操作的是句柄(也可以理解成地址吧),无论你在那里改变的值都会影响全部的值===================================
    我的一分耕耘,你能给一分收获
      

  5.   

    stringBuffer类是不变的,所以内容不变.