Java “字符串”之间的大小是否有差异;a「;和一个字符';a';?
字符串“a”和字符“a”之间的大小有差异吗?Java “字符串”之间的大小是否有差异;a「;和一个字符';a';?,java,string,char,memory-optimization,Java,String,Char,Memory Optimization,字符串“a”和字符“a”之间的大小有差异吗? 当您需要保存单个字母或数字时,是否应该使用字符?一个字母的字符串和一个字母的字符之间没有大小差异(即,指字符串的背衬字符数组)。目前,按照UTF-16编码,它们都需要2个字节,但一旦Java 9在7月份发布,非UTF-16字符将只需要1个字节 字符串显然会比原语占用更多的内存,但这听起来像是过早地优化了。注意,实际上有3种情况 字符串“a” 字符“a” 字符'a' 其中,字符“a”占用的空间最小(2字节),而字符“a”和字符串“a”都是对象,因此由于
当您需要保存单个字母或数字时,是否应该使用字符?一个字母的
字符串和一个字母的字符之间没有大小差异(即,指字符串的背衬字符数组)。目前,按照UTF-16编码,它们都需要2个字节,但一旦Java 9在7月份发布,非UTF-16字符将只需要1个字节
字符串
显然会比原语占用更多的内存,但这听起来像是过早地优化了。注意,实际上有3种情况
字符串“a”
字符“a”
字符'a'
其中,字符“a”占用的空间最小(2字节),而字符“a”和字符串“a”都是对象,因此由于与对象相关的内存开销,两者的大小大致相同。我创建了以下程序,该程序创建了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
大约是一个1字符字符串大小的60%,它的大小与字符的大小相当(在我的JVM上)。这些完全是dif。同时打印相同值的对象…那么我应该在什么时候使用它们,它们之间的主要区别是什么?primitivechar
(或者char
,如果需要对象)确保值仅为单个字符。可能是重复的?或者至少它会有帮助
char[] : 267 million bytes
String[] : 442 million bytes
Character[] : 437 million bytes