是否有一种数据类型比 String 使用更少的存储空间来存储 2 个字母?

Is there a datatype that uses less storage for 2 letters than String?

基本上就是标题所说的。我知道如果我只有一个字母,我可以使用 char 作为类型,但我需要 2 个字母的数据类型,例如 "XY"。有没有使用更少存储空间(位)或小于字符串的东西?还是多个字母通常只是保存为字符串?谢谢!

不,不可能

这就是为什么:: String s = "ab" // 仅使用 4 个字节的数据,因为每个字符保留 2 个字节

其他数据类型除了short和byte外都使用>=4个字节但是这里short和byte不能存储字符

如果您确定没有使用更高的 unicode 字符(即使用超过 1 个字符来存储的字符),则有几个选项:

  • 如@rdas 所述,您可以使用数组:char[2]。这会比 String 更节省内存,因为 String 有额外的成员。如果它只是 ASCII 字符,你甚至可以使用 byte[2].

  • 因为1个字符是16位,2个字符是32位,所以也可以尝试将2个字符编码成1个int,因为这样也只使用32个字节,你不会有数组的对象开销。显然,当您需要将存储的信息显示为实际字符时,这需要一些额外的步骤 encode/decode,例如当呈现给用户时。

  • 如果你的字符只是ASCII码,即每个字符都适合1个字节,你甚至可以把它放在一个short中。

  • 根据您实际需要支持的双字符组合的数量,您实际上可以枚举所有可能的组合,使用查找 Map 或排序数组,然后只存储 number/index 的代码。同样,根据组合的数量,使用字节、short 或 int。