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,更好理解。