首頁 >Java >Java基礎 >java中char佔用多少位元組

java中char佔用多少位元組

coldplay.xixi
coldplay.xixi原創
2020-10-26 09:19:1129630瀏覽

java中char所佔用的位元組:1、java中內碼中的char使用UTF16的方式編碼,一個char佔用兩個位元組;2、java中外碼中char使用UTF8的方式編碼,一個字元佔用【1~6】個位元組。

java中char佔用多少位元組

在討論這個問題之前,我們需要先區分unicode和UTF。

  • unicode :統一的字元編號,僅提供字元與編號間對映。符號數量不斷增加,已超百萬。詳細:[https://zh.wikipedia.org/zh-cn/Unicode]

  • #UTF :unicode轉換格式 (unicode transformation format) 。定義unicode中編號的編碼方式。 utf8和utf16便是其中兩種實現方式。其中utf8為變長表示,長度可能時1~6個位元組;utf16為變長表示,長度可能是2或4個位元組。詳細:UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]

#接著,要分辨內碼(internal encoding)和外碼(external encoding)。

  • 內碼 :某種語言運行時,其char和string在記憶體中的編碼方式。

  • 外碼 :除了內碼,都是外碼。

要注意的是,原始碼編譯產生的目標程式碼檔案(執行檔或class檔案)中的編碼方式屬於外碼。

先看內碼

JVM中內碼採用UTF16。早期,UTF16採用固定長度2位元組的方式編碼,兩個位元組可以表示65536種符號(其實真正能表示要比這個少),足以表示當時unicode中所有字元。但是隨著unicode中字符的增加,2個位元組無法表示所有的字符,UTF16採用了2位元組或4位元組的方式來完成編碼。 Java為因應這種情況,考慮到向前相容的要求,Java用一對char來表示那些需要4位元組的字元。所以,java中的char是佔用兩個字節,只不過有些字元需要兩個char來表示。

外碼

Java的class檔案採用UTF8來儲存字符,也就是說,class中字元佔1~6個位元組。

Java序列化時,字元也採用UTF8編碼,佔1~6個字元。

總結:

  • java中內碼(運行記憶體)中的char使用UTF16的方式編碼,一個char佔用兩個字節,但是某些字元需要兩個char來表示。所以,一個字元會佔用2個或4個位元組。

  • java中外碼中char使用UTF8的方式編碼,一個字元佔用1~6個位元組。

  • UTF16編碼中,英文字元佔兩個位元組;絕大多數漢字(尤其是常用漢字)佔用兩個位元組,個別漢字(在後期加入unicode編碼的漢字,一般是極少用到的生僻字)佔用四個位元組。

  • UTF8編碼中,英文字元佔用一個位元組;絕大多數漢字佔用三個位元組,個別漢字佔用四個位元組。

EOF

相關免費學習推薦:java基礎教學

#

以上是java中char佔用多少位元組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn