public class StringTest {
 /**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer a = new StringBuffer("A");
		StringBuffer b = new StringBuffer("B");
		operate(a,b);
		System.out.println(a.toString() + "," + b);
	}
	 static void operate(StringBuffer x, StringBuffer y) {
		// TODO Auto-generated method stub
		y.append(x);
//		System.out.println("=============");
//		System.out.println("y=:"+y+"这是传入的b");
//		System.out.println("x=:"+x+"这是传入的a");
		y = x;
//		System.out.println(y = x);
//		System.out.println("-------------");
//		System.out.println("y=:"+y);
//		System.out.println("x=:"+x);
//		System.out.println("=============");
	}
}
结果:A,BA
比如string a=A这里字符"A"会开辟一个物理地址来存储"A"这个值,引用a也会开辟一个物理地址用来存放字符"A"存储的所在地址。当你用string b = a来赋值的时候,是把a的物理地址传递给b而不是字符"A"的地址。这时候改变b引用的内容,丝毫不会影响到a引用的内容。然后方法结束后这两个临时的变量a和b都被抛弃了,这丝毫不会改变y所引用的对象。