这道题答案为什么是"a=123123,b=456"呢?

public static void main(String[]args)
{  
    StringBuffer a = new StringBuffer("123");
    StringBuffer b = new StringBuffer("456");

    test(a ,b);
    System.out.println(a);
    System.out.println(b);
}

static void test(StringBuffer a,StringBuffer b)
{

    a.append("123");
    b=a;
}

http://www.iteye.com/topic/357506 同类的问题

test函数中传入的a和b只是形式参数,相当于一个临时变量。
在test函数中,a和主函数中的a都指向同一个StringBuffer对象,所以调用a.append时StringBuffer对象中的内容会变成“123123”。而b=a
只是将临时变量的b的内容指向了a变量所指向的StringBuffer对象,实际上的主函数中的b依旧指向自己的StringBuffer对象。

不知道这样解释能不能明白。 :)