本帖最后由 hcrystald 于 2012-11-02 16:00:52 编辑

解决方案 »

  1.   

    String属于不可变对象,stringReplace方法对其修改,所以需要产生一个新的String对象来容纳新值,而旧的textString则不受影响。StringBuffer是普通的引用对象,传递了一份拷贝到bufferReplace中,两者指向了同一个对象,修改其中之一都会使另外一个受影响。
      

  2.   

    stringReplace :
       A引用和B引用都指向了 X对象,但B又被指向了Y新对象,所以A引用没受影响bufferReplace:   A引用和B引用都指向了 X对象,但X对象又被改变了,所以通过A引用去得到X对象的值,发现修改了。
      

  3.   

    String属于基本类型 StringBufer属于类,java传递机制有两种,一种是值传递,一种是引用传递,一般情况下如果参数是基本类型的话属于值传递,不会改变原先的值,而参数是对象的话则是引用传递,引用传递相当于c语言里面的指针传递,对参数的修改就是对传递的对象的修改