首頁  >  文章  >  Java  >  har[] 和 String 類型佔用位元組大小問題

har[] 和 String 類型佔用位元組大小問題

(*-*)浩
(*-*)浩轉載
2019-08-08 16:35:232131瀏覽

har[] 和 String 類型佔用位元組大小問題

在C 語言中

1、char a[10] = {"China"} 中,這個a 佔用多少位元組?

答案:佔用 10 個位元組。

解析:上面程式碼對a 做了賦值的操作,

a[0]='C' ,a[1]='h' ,a[2]='i' ,a[3]='n' ,a[4]='a' ,a[5]='\0',a[6]='\0',a[7]='\0',a [8]='\0',a[9]='\0'

所以,它佔用的是10 個位元組。

2、如果單指 ”China“ ?

答案:共 6 個位元組。 China 佔 5 個字節,最後以 '\0' 結束,佔 1 個位元組。

在 Java 語言中

1、String s = "China"; 佔多少位元組?

答:佔 5 個位元組。

 System.out.println(Charset.defaultCharset());//获取ide默认编码类型
String s = new String("China".getBytes());
byte[] b = s.getBytes();
System.out.println("" + b.length);

 以上程式碼,可以輸出 "China" 所​​佔的位元組長度為 5

2、String s = "中國"; 佔多少位元組?

答:如果是 漢字 的情況需要考慮編碼。

(1)GBK 編碼(ide預設)時,每個漢字佔用 2 個字節,那麼中國佔 4 個位元組。

(2)UTF-8 編碼時,每個漢字佔用 3 個位元組,那麼中國佔用 6 個位元組。

3、轉碼問題,GBK 轉 UTF-8 時,位元組佔用會變大嗎?反過來呢?

//获取的是 UTF-8编码
System.out.println(Charset.defaultCharset());
String s;
try {
        s = new String("中国".getBytes(),"GBK");
        byte[] b = s.getBytes();
        System.out.println("" + b.length);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
}

如上程式碼是:UTF-8 轉 GBK 編碼格式,s 長度從 6 個位元組變成 9 個位元組。

s 內容變化:中國 —> 涓浗

因為目前編碼是 UTF-8,轉碼之後變成了 3 個文字,佔用 9 個位元組。然而,反過來的情況是這樣的:

中國(gbk) —> ?й? (utf-8)

s 長度從4位元組變成了4位元組,雖然長度沒有改變,但文字已經改變。這裡的 ?佔用 1 個位元組

以上是har[] 和 String 類型佔用位元組大小問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除