同样是引用类型,为什么b的值没变

img

首先StringBuffere是String的增强,String是值传递,而不是引用传递。
你把a.append(b);这个结果拼接了,肯定是AB。
为什么b输出B是因为StringBuffer b这里是局部变量,你把b=a;这里确实等于AB,但是这个变量的范围是这个方法,方法结束,变量消失,带不出去的。

append对a数组内的元素进行了修改,所以能改变a的值,y=x是直接对形参修改,对main函数中的b没有影响。