我使用CharBuffer来解码字符串在我的应用程序。但是当我使用CharBuffer。当调用toString方法时,看起来就像创建了String对象。当我使用CharBuffer时,是否有任何方法使用字符串池?以下是我的方法,提前感谢。
private CharBuffer charbuf = CharBuffer.allocate(32000);
private String read(ByteBuffer buf, CharsetDecoder decoder)
{
charbuf.clear();
while (buf.remaining() > 0)
{
CoderResult result = decoder.decode(buf, charbuf, true);
if (result == CoderResult.OVERFLOW)
{
throwInternalError();
}
if (result.isError())
{
char data = (char)buf.get();
if (result.isUnmappable())
{
charbuf.put('?');
}
else if (result.isMalformed())
{
charbuf.put(data);
}
}
}
charbuf.flip();
return charbuf.toString();
}
当然看起来只要调用
toString()
方法,就会创建String
对象。
。这就是它的作用。你可以少打几次。如果它没有改变就没有意义。
当我使用
CharBuffer
时,是否有任何方法使用字符串池
你可以intern()
Strings
。但我不会去管它。Strings
将在正常的事件过程中被垃圾收集。