日期:2014-05-20  浏览次数:20613 次

StringBuffer相关问题
public class MyClass{
      static void aMethod(StringBuffer sf1,String sf2){
         sf1.append(sf2);
        sf2  = sf1;
     }
     public statc void main(String[] args){
             StringBuffer sf1 = new StringBuffer("A");
             StringBuffer sf2 = new StringBuffer("B");
             aMethod(sf1,sf2);
             System.out.println(sf1+":"+sf2);//AB:B
      }
}
谁能解释一下这个结果,我在aMethod中用sf1 == sf2 ,sf1.equals(sf2) 怎么都为true?
string class stringbuffer

------解决方案--------------------
楼主的代码,aMethod(StringBuffer sf1,StringBuffer sf2) 这个方法里的变量sf1,sf2和main方法里的sf1,sf2同名,但是不同的变量。
开始时它们都指向同一个对象,但当运行到sf2=sf1时,让方法aMethod内的这个sf2指向了sf1,这时的sf2和外边的sf2已经没关系了.(sf1没变,里面的和外边的指向同一个对象)。
前段时间看到过火龙果的一个回帖,讲这个方法参数的传递和变化,后来找不到这个帖子了,楼主可以找找,看了那个帖子,就会一清二楚了。(主要是画了很多图)。

或者,楼主把方法内的变量换一下,比如叫asf1,asf2,更好理解。