String "a" 和 Char 'a' 之间的 SIZE 有区别吗?

Is there a difference in SIZE between String "a" and a Char 'a'?

String "a" 和 Char 'a' 在大小上有区别吗? 当您需要保存单个字母或数字时,您应该使用 Char 吗?

一个字母的String和一个字母的char之间没有大小差异(参考String的支持char数组,即是)。目前,根据 UTF-16 编码,它们都需要 2 个字节,但一旦 Java 9 于 7 月发布,非 UTF-16 字符将只需要 1 个字节。

String 显然会比原语占用更多的内存,但听起来您过早地进行了优化。

注意实际上有3个案例

字符串"a"
字符'a'
字符 'a'

其中,char 'a' 将占用最少的 space(2 个字节),而 Char 'a' 和 String "a" 都是对象,因此由于与对象相关的内存开销,两者的大小大致相同

让我们来了解一些模糊的科学知识。我创建了以下程序,它创建了一个包含 1 亿个字符或字符串的数组:

public class NewClass {
    private static final int SIZE = 100000000;

    public static void main(String... args)
    {
        char[] a = new char[SIZE];

        for (int i = 0; i < SIZE; ++i)
        {
            a[i] = 'a';
        }
    }
}

我使用 char[]、一次使用 String[] 和一次使用 Character[].

对其进行了分析

堆使用量space:

char[]      : 267 million bytes
String[]    : 442 million bytes
Character[] : 437 million bytes

所以 char 大约是 1 个字符 String 大小的 60%,这与 Character(在我的 JVM 上)的大小相当。