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

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,
跪求答案

------解决方案--------------------
函数的参数是对像的引用,
在这前提下:
当函数中执行当前对像的方法来操作对像的时候,修改是原对像,
但是,当你用=来重新赋值的时候就不一样了,这相当于修改了这个引用的指向,原来它和函数外是一样对像,
修改后就和原对像分离了。
所以就是你看到的结果了。