String“a”和Char'a'之间的大小是否有差异? 当你需要保存单个字母或数字时,你应该使用字符吗?
答案 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上)相当。