public class Foo{
public static void main(String [] args){
StringBuffer a = new StringBuffer("G");
StringBuffer b = new StringBuffer("H");
operate(a,b);
System.out.printlen(a+","+b)
}
private static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y=x;
}
}
输出 GH,H;
java 都是拷贝传递(也就是所为的值传递)a的引用变量将自己的存储单元的内容传给了operate()方法的x的变量
也就是将实体对象的地址传给了x变量,在operate()方法中对x的一切操作都是针对x所指向的这个存储单元。
(x是StringBuffer值的一个引用副本)
Java 编程语言只有值传递参数-----当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。