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,
跪求答案
{
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,
跪求答案
解决方案 »
- spring的事务为什么要用?什么时候使用?
- 误把classess下的东西都删了 怎么办
- 关于jxl写入小数的问题
- web客户端程序复用问题
- 急,求Hibernate分页问题
- 一个郁闷了我一个星期的问题(hibernate),谢谢,解决就给分,~~
- 请问Tomcat 5.0的安装位置有没有什么要求?谢谢.
- 求weblogic7。0的下载。
- --------------petstore的数据模型问题-----------------
- 微信登录,获得微信unionid后如何实现spring security下的账号密码登录?
- 关于登录随机验证码的问题
- 有过使用JCreator和Sqlserver2008开发经验的进
是这句代码搞的鬼!
但是具体的我也不清楚、等候大牛!
你这个例子应该是按引用传递。
因为是引用传递,aMethod结束后,sf2还是指向B。
sf1.append(sf2); 因为是stringbuffer引用的地址不会变,直接在最后加字符串,所以main里的sf1
的值也会加上sf2
sf2 = sf1; sf2已经指向了sf1的地址了,而main里的还是指向了原来的地址,因此会出现AB:B
这是不可能的,因为是应用传递,所以方法体里对应用的操作会同步到main中,除非像8楼说的,sf2=sf1的等号切断了他们的联系