簡體   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