package com.hsp.aop;
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("A");
StringBuffer sb2 = new StringBuffer("B");
operate(sb1, sb2);
System.out.println(sb1 + "---" + sb2);//AB---B
}
static void operate (StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
System.out.println(x+"--------"+y);//AB--------AB
}
/*
变量a b x y中存储的是StringBuffer变量的引用而不是一个StringBuffer对象。
根据非基本类型参数传递为引用传递的规则,operate接收的参数只是StringBuffer对象的引用.
因此可以理解为x、a都是指向同一个对象;b、y也是指向同一个StringBuffer对象,
所以x.append(y)将导致x和a同指的StringBuffer对象改变(增加"B");
而y=x只是让变量y改变指向为和x相同的StringBuffer对象,而y原来所指的对象并不会发生任何改变。
*/
}
package com.hsp.aop;
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("A");
StringBuffer sb2 = new StringBuffer("B");
operate(sb1, sb2);
System.out.println(sb1 + "---" + sb2);//AB---B
}
static void operate (StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
System.out.println(x+"--------"+y);//AB--------AB
}
/*
变量a b x y中存储的是StringBuffer变量的引用而不是一个StringBuffer对象。
根据非基本类型参数传递为引用传递的规则,operate接收的参数只是StringBuffer对象的引用.
因此可以理解为x、a都是指向同一个对象;b、y也是指向同一个StringBuffer对象,
所以x.append(y)将导致x和a同指的StringBuffer对象改变(增加"B");
而y=x只是让变量y改变指向为和x相同的StringBuffer对象,而y原来所指的对象并不会发生任何改变。
*/
}