首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java stringbuffer,该如何解决

2012-03-23 
java stringbufferstatic void aMethod(StringBuffer sf1,StringBuffer sf2){sf1.append(sf2)sf2 sf1S

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

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

热点排行