public class Test {
public static void bufferReplace(StringBuffer text) {
text = text.append("C");
System.out.println("还是原来的内存区域:" + text);
}
public static void main(String args[]) {
StringBuffer textBuffer = new StringBuffer("java");
bufferReplace(textBuffer);
/**
* 结果:javac
* 说明:StringBuffer是可变的,所以,当追加字符串时,还是在原来的对象上增加,故在打印时,就变成了javac了,
*/
StringBuffer textBuffer2 = new StringBuffer("java");
StringBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer("a");
System.out.println("a.equals(b): " + a.equals(b)); //false
System.out.println(a == b); //false
}
重点: 关于这两个false,按照常理,比如说String的话,答案肯定是true 和 false ,为什么StrngBuffer和StringBuilder都是false呢,查了一下JDK文档,原来这两个自身都没有equals()方法,是从Object中继承来的,所以StringBuffer和StringBuilder如果要比较值的话,只能这样
System.out.println(a.toString().equals(b.toString()));
结果:true