2
public class Test
{
    static void operate(StringBuffer x, StringBuffer y)
    {
        x.append(y);
        y=x;
    }

    public static void main(String args[])
    {
        StringBuffer x=new StringBuffer("Sun");
        StringBuffer y=new StringBuffer("Java");

        operate(x,y);
        System.out.println(x+","+y);
    }
}

彼の版画 : SunJava,Java

SunJava,SunJava の代わりにそのように印刷される理由を誰か説明してもらえますか?

4

1 に答える 1

1

y の StringBuffer への参照をoperate 関数に渡します。次に、操作で参照を変更しますが、オブジェクトは変更しません。操作の呼び出し後、メイン関数には、最初に割り当てられた StringBuffer への参照が残っています。

于 2013-02-09T10:14:42.807 に答える