StringBuffer行为

时间:2013-08-27 12:38:51

标签: java stringbuffer

public class Test {
    public static void main (String [] args) {
        TestMathRandom x = new Test();
         StringBuffer a = new StringBuffer ("A");
         StringBuffer b = new StringBuffer ("B");
         x.operate (a,b);
         System.out.println(a + "," +b);
    }

    void operate (StringBuffer x, StringBuffer y) {
         x.append(y);
         y = x;

    }
}

Ans是AB,B请告诉我为什么b的值不变。

3 个答案:

答案 0 :(得分:1)

您传递变量x和y的值,而不是对它们的引用。因此,在操作函数内部所做的更改是无用的,请按照提供的链接作为对帖子的评论以便更好地理解;)

答案 1 :(得分:0)

在方法操作的参数中传递StringBuffer是passbyvalue。在这种类型中,变量的值只是复制到方法参数中定义的临时变量中。 a和b的示例值中的均值仅在xy中复制。此处a的值已更改,但b未更改。
显而易见。此处b的值没有变化,因为yb的镜像副本。但append函数与实际值一起使用。它需要引用x并附加y,并最终显示a处的更改。

答案 2 :(得分:0)

这是因为在Java中,参数是按值传递的。所以y = x只是改变了操作方法中的局部变量值。