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);
}
}
他的版画:Sun Java,Javap>
任何人都可以解释为什么它是这样打印而不是Sun Java,Sun Java?
答案 0 :(得分:1)
您将对y中的StringBuffer的引用传递给您的操作函数。然后在操作中,您更改引用,但不更改对象。在调用操作之后,main函数仍然引用它最初分配的StringBuffer。