繁体   English   中英

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

[英]Is there a difference in SIZE between String “a” and a Char 'a'?

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

注意实际上有3个案例

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

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

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

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

让我们在这里进行一些模糊的科学研究。 我创建了以下程序,它创建了一个包含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上)相当。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM