java stringbuffer
static void aMethod(StringBuffer sf1,StringBuffer sf2)
{
sf1.append(sf2);
sf2 = sf1;
System.out.println(sf1);
System.out.println(sf2);
}
public static void main(String[] args)
{
StringBuffer sf1 = new StringBuffer("A");
StringBuffer sf2 = new StringBuffer("B");
aMethod(sf1,sf2);
System.out.println(sf1 + " :" + sf2);
}
为什么最后打印出 AB:B ,调用method后,不是sf2 = sf1 都指向AB吗,为什么不是AB:AB,
跪求答案
------解决方案--------------------
函数的参数是对像的引用,
在这前提下:
当函数中执行当前对像的方法来操作对像的时候,修改是原对像,
但是,当你用=来重新赋值的时候就不一样了,这相当于修改了这个引用的指向,原来它和函数外是一样对像,
修改后就和原对像分离了。
所以就是你看到的结果了。