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的值不变。
答案 0 :(得分:1)
您传递变量x和y的值,而不是对它们的引用。因此,在操作函数内部所做的更改是无用的,请按照提供的链接作为对帖子的评论以便更好地理解;)
答案 1 :(得分:0)
在方法操作的参数中传递StringBuffer是passbyvalue
。在这种类型中,变量的值只是复制到方法参数中定义的临时变量中。 a和b的示例值中的均值仅在x
和y
中复制。此处a
的值已更改,但b
未更改。
显而易见。此处b
的值没有变化,因为y
是b
的镜像副本。但append
函数与实际值一起使用。它需要引用x
并附加y
,并最终显示a
处的更改。
答案 2 :(得分:0)
这是因为在Java中,参数是按值传递的。所以y = x只是改变了操作方法中的局部变量值。