首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >初始化StringBuilder以使用UTF-16编码器

初始化StringBuilder以使用UTF-16编码器
EN

Stack Overflow用户
提问于 2019-05-30 18:19:55
回答 1查看 354关注 0票数 5

考虑Java 11中的以下代码:

代码语言:javascript
复制
StringBuilder sb = new StringBuilder("one");
sb.append("δύο");  // "two"

第一行创建了一个使用Latin1编码器的StringBuilder (每个字符一个字节)。然后,第二行代码使StringBuilder意识到它需要使用UTF16编码器,因此它在附加新的UTF-16字符之前将其当前内容复制到一个新的数组中。

StringBuilder类有一个接受初始容量参数的构造函数重载,如果您已经知道要构建的字符串的所需大小,则该参数旨在避免重新分配。但是如果你从一个英文字符串开始,然后追加一个外来字符串,这个特殊的构造函数重载是无用的,因为它仍然会重新分配字节数组。

有没有办法从一开始就使用UTF16创建StringBuilder实例?

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 18:41:13

似乎没有明显的原因。如果你想影响StringBuffer的初始化方式,我的建议是创建一个实现CharSequence的实用工具'initializer‘,并使用相应的StringBuilder构造函数。您可以使用它传递任何长度和字符内容,并且StringBuilder内部应该足够智能,能够识别它。

但是,看看OpenJDK 11的实现,似乎无论如何都要从Latin1开始。某种形式的重新分配似乎总是会发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56376298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档