[英]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.