考虑 Java 11 中的以下代码:
StringBuilder sb = new StringBuilder("one"); sb.append("δύο"); // "two"
第一行创建一个StringBuilder
使用 Latin1 编码器的代码(每个字符一个字节)。然后第二行使 StringBuilder 意识到它需要改用 UTF16 编码器,因此它在附加新的 UTF-16 字符之前将其当前内容复制到一个新数组中。
StringBuilder 类有一个构造函数重载,它接受一个初始容量参数,如果您已经知道要构建的字符串的所需大小,它旨在避免重新分配。但是如果你从一个英文字符串开始,然后附加一个外国字符串,这个特殊的构造函数重载就没有用了,因为它仍然重新分配字节数组。
有没有办法创建一个从一开始就使用 UTF16 的 StringBuilder 实例?
catspeake
素胚勾勒不出你
青春有我
相关分类