Java 爲什麼佔兩個字節的char類型採用utf-8時可以存儲中文?

Java語言內部存儲採用的是Unicode編碼,Unicode編碼中的每個字符佔兩個字節,中文也是佔兩個字節,所以,Java中的字符可以存儲一箇中文漢字。

1、而在不同的編碼方式中,中文所佔的字節數是不同的:

① ASCII碼中,一個英文字母(不分大小寫)佔一個字節的空間,一箇中文漢字佔兩個字節的空間。一個二進制數字序列,在計算機中作爲一個數字單元,一般爲8位二進制數,換算爲十進制。最小值0,最大值255。

② UTF-8編碼中,一個英文字符等於一個字節,一箇中文(含繁體)等於三個字節。

③ Unicode編碼中,一個英文等於兩個字節,一箇中文(含繁體)等於兩個字節。

符號:英文標點佔一個字節,中文標點佔兩個字節。舉例:英文句號“.”佔1個字節的大小,中文句號“。”佔2個字節的大小。

④ UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都需要2個字節(Unicode擴展區的一些漢字存儲需要4個字節)。

⑤ UTF-32編碼中,世界上任何字符的存儲都需要4個字節。

2、解釋爲什麼Java的char類型只佔用兩個字節,採用utf-8編碼時,爲什麼可以存儲漢字?

Unicode是一種字符集(charset),用兩個字節就能囊括世界上多有的文字集合。

UTF-8是一種編碼方式(encoding),是Unicode的一種表現方式。

在Java文件中如果聲明瞭char c = '中';,編譯後生成的class文件會把轉化成Unicode的一種表現方式。

Java char在內存中只會使用Unicode編碼,所有其他編碼只可能是在轉換成byte[]之後才能具體體現。

理解字符集和字符編碼的區別,有助於題主理解這些問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章