当我用new定义一个StringBuffer变量时,该字符串没有添加到字符串池中,对吗?
创建a
StringBuffer根本不会创建a
String。
现在,当我定义另一个StringBuffer而不是new时,我突然将其定义为StrPrev.append(“ XXX”)。
这是完全困惑的:
打电话时,
strBuff.append("XXX")
您未定义新的StringBuffer
。要更新现有的StringBuffer
那strBuff
指。具体来说,您要在缓冲区的末尾添加额外的字符。致电时,您只会
String
从那里得到StringBuffer
新消息strBuff.toString()
。您只需添加一个
String
当你打电话的字符串池intern()
上String
。而且,如果池中还没有相等的字符串,则仅将字符串添加到池中。表示文字的String对象
"XXX"
是字符串池的成员。但这是在加载类时发生的(即,将String添加到池中),而不是在执行append
调用时发生。
(如果您的老师告诉您StringBuffer将字符串放入Java字符串池,那么他/她是错误的。但是,鉴于您的描述很乱,我怀疑您 实际上是在
听错或误解了老师的真实话。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)