如何在 java 中使用 utf-8 字符串而不分配新的 String 对象而是作为字节数组的一部分?

How to work with utf-8 strings in java without allocating a new String object but as part of byte array instead?

我想从包含 utf-8 字符串的二进制格式读取我的代码。

此外,我不希望在这个地方任何分配,因为它们会召唤 GC 暂停世界,这对我来说有点不好。

我可以很好地处理我的大多数基元和数组,除了字符串,因为 java 是一种“面向对象的语言”,并强调大量使用对象(= 分配)。而且它不提供在没有分配的情况下使用 utf-8 字符串的标准方法,因为它具有不可变的对象一。 所以,我需要从这些东西中得到什么——验证、提取 Char 而不是创建任何其他对象。 IE。我应该可以把这个东西放在池子或其他地方,用 data: Array[Byte]offset: Intlength: X 初始化,不要复制。 CharIterable 能够将此对象翻新为其他字符串的东西。

那么,我应该手动完成还是有人已经完成了?

我想您可以尝试直接调用 String 在内部使用的低级库,例如 CharsetDecoder,它可以从 ByteBuffer 解码为预分配的 CharBuffer。

但是你可能做得太过头了,我会首先衡量使用 String(和相关的对象分配)是否真的是一个问题。