public static void main(String[]age)
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.print(a+","+b);
}
public static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
结果:AB,B
为什么y=x后y的值还是B
有一点一定要理解清楚, b和y是指向同一个内存对象,这是没有错的, 但是它们是不同的引用.
y = x; 是把y的引用指向了x, 但是b并不会指向x啊. 它们是两个不同的嘛.
刚学java的时候也碰到过这种问题~
开始:a,x指向A ;b,y指向B
a -> A <- x
b -> B <- y
由x.append(y);
得:
a -> AB <- x
b -> B <- y
再由:y=x;
得a -> AB <- x
AB <- y
b -> B
x,y与a指向AB,b指向B!
所以x与y的值都为AB,a的值为AB,b的值为B!!
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息