class BufferTest
{
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
modify(a,b);
System.out.println(a+","+b);
}
public static void modify(StringBuffer x,StringBuffer y)
{
y.append(x);
y=x;
}
}
运行结果是:A,AB
对于这个结果怎么想也想不明白,似乎y=x这条语句根本不起作用
这次笔试感觉挺郁闷的,题目全是英文的就不说了,还必须得用英文来答题
{
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
modify(a,b);
System.out.println(a+","+b);
}
public static void modify(StringBuffer x,StringBuffer y)
{
y.append(x);
y=x;
}
}
运行结果是:A,AB
对于这个结果怎么想也想不明白,似乎y=x这条语句根本不起作用
这次笔试感觉挺郁闷的,题目全是英文的就不说了,还必须得用英文来答题
```
http://topic.csdn.net/u/20080602/20/8ca7854a-ed9e-4d6d-91c7-a1791c66bdf1.html
楼主 去看下吧 `
y=x; // 这句话让 y 等于 x但可以,x和 y本身是指向对象的指针,而他们有事方法的局部变量。在调用方,仍然有a b 分别指向原始的对象。
{
y.append(x);
y=x;
} 在这个方法中,xy作为局部变量存在,离开这个方法,xy也就不存在了
对于其本身引用的修改不会反映到外部
传进去的只是参数引用的副本.复制,copy?
引用x,y分别是引用a,b的副本
从mail 开妈,
a[0]=Ab[0]=B
调用方法,
x=A,
y=B,
y=BA
y=A之后,回到mail中,
a[0]=Ab[0]=B
b[1]=A因此,a=A,b=BA
这个全部的过程,可能明白呀!
在调用过方法之后,b[0]并没有重新赋值,而是加上了b[1]=A的操作!