public class lx { public static void main(String[] args){ lx xy=new lx(); StringBuffer a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B"); xy.xy(a, b); System.out.println(a+","+b); } public void xy(StringBuffer a,StringBuffer b){ a.append(b); b=a; System.out.println(a+","+b); } } 为什么两次输出的结果不一样?不都是(AB,AB),而是(AB,B)?
首先StringBuffere是String的增强,String是值传递,而不是引用传递。 你把a.append(b);这个结果拼接了,肯定是AB。 那么我们来分析一下,为什么b输出B呢? 是因为StringBuffer b)这里是局部变量,你把b=a;这里确实等于AB,但是这个变量的范围是这个方法,方法结束,变量消失,带不出去的。