public class StringBufferDemo3 {
public static void main(String[] args) {
StringBuffer buf1 = new StringBuffer("hello");
StringBuffer buf2 = new StringBuffer("java");
test(buf1,buf2);
System.out.println(buf1+"..."+buf2);
}
StringBuffer buf2 = new StringBuffer("java");
test(buf1,buf2);
System.out.println(buf1+"..."+buf2);
}
private static void test(StringBuffer buf1, StringBuffer buf2) {
buf1.append(buf2); //把buf2的数据(java),追加到buf1(java)后
buf1=buf2; //把buf2的对象地址赋给buf1。(buf1指向java的地址)
//看到对象之间的运算,要判断运算的是其内部数据(比如用方法),还是控制其地址。
//就像上面的等于号,并不是赋值的意思,而是现在对象buf1指向对象buf2的地址值,对象本身不会改变
//当函数出栈之后,buf1便还是之前被buf2追加后的地址(hellojava)
System.out.println(buf1+"..."+buf2);
}
buf1.append(buf2); //把buf2的数据(java),追加到buf1(java)后
buf1=buf2; //把buf2的对象地址赋给buf1。(buf1指向java的地址)
//看到对象之间的运算,要判断运算的是其内部数据(比如用方法),还是控制其地址。
//就像上面的等于号,并不是赋值的意思,而是现在对象buf1指向对象buf2的地址值,对象本身不会改变
//当函数出栈之后,buf1便还是之前被buf2追加后的地址(hellojava)
System.out.println(buf1+"..."+buf2);
}
}
其中大部分是学习他人的代码,加以自己的理解