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 的引用传递给您的操作函数。然后在操作中,您更改引用,但不更改对象。在调用操作之后,您的 main 函数仍然具有对它最初分配的 StringBuffer 的引用。

于 2013-02-09T10:14:42.807 回答