2017-04-03 133 views
1

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

+0

那些完全DIF。巧合地打印相同的值的对象... –

+0

那么,我什么时候应该使用它们,它们之间的主要区别是什么? – mangaluli

+0

原始'char'(或者如果你想要的对象是'Char')确保这个值只是单个字符。 –

回答

3

注有实际3箱子

字符串 “a”
字符 'a'
字符的这些 'A'

,字符 'A' 将占用的空间最少( 2字节),而字符'a'和字符串“a”都是对象,所以由于与对象相关的内存开销,两者的尺寸大致相同。

+1

@Michael好点。固定 – ControlAltDel

0

有一个字母的Stringchar一个的字母之间没有尺寸差异(指背衬char阵列String的,即)。目前,按照UTF-16编码它们都需要2个字节,但一旦Java 9在7月发布,非UTF-16字符将只需要1个字节。

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

0

让我们来看看这里隐约可见的科学。我创建了下面的方案,其中将创建的亿度的字符或字符串的数组:

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,其大小相当于一个Character(在我的JVM)的大小的大约60%。

相关问题