public static void main(String sgf[]) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a + "," + b);
} static void operate(StringBuffer x, StringBuffer y) {
x.append(y);// 在此x经append(y)之后就变成了AB
y = x;// 为啥y没有改变呢?
}
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a + "," + b);
} static void operate(StringBuffer x, StringBuffer y) {
x.append(y);// 在此x经append(y)之后就变成了AB
y = x;// 为啥y没有改变呢?
}
y = x 操作是改变一个变量的指向,而且是一个局部变量
y = x;// 这里只是一个赋值操作
y = x后y和b已经指向不是同一个对象,b指向的还是原来的,y指向的已经是x指向的对象了
你这样输出下就能看的出来了public static void main(String sgf[]) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a + "," + b);
} static void operate(StringBuffer x, StringBuffer y) {
x.append(y);// 在此x经append(y)之后就变成了AB
y = x;//这里y已经指向了x所指的对象,值为AB了
System.out.println(x + "," + y);
}