如何避免与String.getBytes(Charset ch)相关的开销

时间:2012-02-22 17:36:03

标签: java performance character-encoding

使用String.getBytes(Charset ch),分配一个新的缓冲区,实际上它返回一个byte[]。有办法避免这种情况吗?我想要一个可重用的字节数组,并在这个缓冲区中编码字符串。

3 个答案:

答案 0 :(得分:1)

您可以直接使用CharsetCharsetEncoder API,特别是调用encode(CharBuffer, ByteBuffer, boolean)。但是,我不希望它最终成为特别令人愉快的代码。

答案 1 :(得分:1)

如果你像我一样不掌握ByteBuffer,为了补充Jon的答案,你也可以创建自己的包装字节数组的OutputStream实现,并使用OutputStreamWriter将String写入此自定义{ {1}}。

答案 2 :(得分:-1)

您可以使用

getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

//Copies characters from this string into the destination character array.

自己管理阵列。