StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer(sb1);
sb1.append("d");
System.out.println(sb2);
由于StringBuffer是可变的,并且sb2指向sb1,所以我希望sb2具有“ abcd”作为值。 尽管问题是外行,但是请您帮我解释一下。
答案 0 :(得分:1)
StringBuffer在调用$("#abc").val("two")
时在Heap中创建一个新对象。它不指向new StringBuffer(sb1)
。
如果您希望使sb1
指向sb2
,请声明sb1
StringBuffer sb2 = sb1
构造一个字符串缓冲区,该字符串缓冲区初始化为 指定的字符串。字符串缓冲区的初始容量为16加 字符串参数的长度。
答案 1 :(得分:0)
如果您看到代码StringBuffer
,则没有构造函数使用 StringBuffer ,而是在构造函数下,并且因为StringBuffer
实现了CharSequence
,这就是它起作用的原因。 / p>
public StringBuffer(CharSequence seq)
您的代码无法正常工作,因为它没有附加StringBuffer
而不是内容。
来自public StringBuffer(CharSequence seq)
构造一个字符串缓冲区,其中包含与指定CharSequence相同的字符。字符串缓冲区的初始容量为16加上CharSequence参数的长度。