代码
class Test {
public static void main(String args[]) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
modify(a, b);
System.out.println(a + " " + b);
}
public static void modify(StringBuffer a, StringBuffer b) {
a.append(b);
a = b;
System.out.println(a + " " + b);
}
}
我了解函数中的打印语句,modify
并且我也知道StringBuffer
类会就地修改字符串,因此a.append(b)
使字符串引用“AB”。
我的问题是如何String a
在函数外更改为“AB”,modify
但语句在函数a=b
外没有影响modify
。基本上,变量何时通过值传递,何时通过引用传递?