字符串“a”和字符“a”之间的SIZE有区别吗?

时间:2017-04-03 15:09:16

标签: java string char memory-optimization

String“a”和Char'a'之间的大小是否有差异? 当你需要保存单个字母或数字时,你应该使用字符吗?

3 个答案:

答案 0 :(得分:3)

注意实际上有3个案例

字符串“a”
字符'a'
char'a'

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

答案 1 :(得分:0)

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

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

答案 2 :(得分: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个字符String的大小的60%,其大小与Character(在我的JVM上)相当。