2

字符串“a”和字符“a”的大小有区别吗?当您需要保存单个字母或数字时,您应该使用 Char 吗?

4

3 回答 3

4

注意实际上有3种情况

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

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

于 2017-04-03T15:12:09.337 回答
0

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

显然会比原语消耗更多的String内存,但听起来你过早地优化了。

于 2017-04-03T15:12:01.713 回答
0

让我们在这里得到一些模糊的科学知识。我创建了以下程序,它创建了一个包含 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[]

已用堆空间量:

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

char大约是 1 character 大小的 60%,其大小String与 a Character(在我的 JVM 上)相当。

于 2017-04-03T15:41:06.533 回答