写错了
    System.out.println(s2); //B 为什么是B?????

解决方案 »

  1.   

    System.out.println(s1);//AB 因为stringbuffer的append是改变地址内的值。
    System.out.println(s2); //应该是B,s2不变。
      

  2.   

    method内是传引用的。只是把参数的reference拷贝一份,传入method中,但参数的值是不会反馈的。除非修改参数地址内的值,或加上返回值。否则是不会影响method外的参数。
      

  3.   

    s1是StringBuffer,StringBuffer的append函数有改变地址内的值的能力。
      

  4.   

    s1通过append方法改变的是对象内部的值,s1引用值没改。
      

  5.   

    明白了!多谢panq() 和zh9625(短笛)