溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中char占用的字節(jié)是多少

發(fā)布時(shí)間:2020-10-27 10:13:37 來(lái)源:億速云 閱讀:277 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹java中char占用的字節(jié)是多少,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

java中char占用的字節(jié):1、java中內(nèi)碼中的char使用UTF16的方式編碼,一個(gè)char占用兩個(gè)字節(jié);2、java中外碼中char使用UTF8的方式編碼,一個(gè)字符占用【1~6】個(gè)字節(jié)。

在討論這個(gè)問(wèn)題之前,我們需要先區(qū)分unicode和UTF。

  • unicode :統(tǒng)一的字符編號(hào),僅僅提供字符與編號(hào)間映射。符號(hào)數(shù)量在不斷增加,已超百萬(wàn)。詳細(xì):[https://zh.wikipedia.org/zh-cn/Unicode]

  • UTF :unicode轉(zhuǎn)換格式 (unicode transformation format) 。定義unicode中編號(hào)的編碼方式。utf8和utf16便是其中兩種實(shí)現(xiàn)方式。其中utf8為變長(zhǎng)表示,長(zhǎng)度可能時(shí)1~6個(gè)字節(jié);utf16為變長(zhǎng)表示,長(zhǎng)度可能是2或4個(gè)字節(jié)。詳細(xì):UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]

接著,要分清內(nèi)碼(internal encoding)和外碼(external encoding)。

  • 內(nèi)碼 :某種語(yǔ)言運(yùn)行時(shí),其char和string在內(nèi)存中的編碼方式。

  • 外碼 :除了內(nèi)碼,皆是外碼。

要注意的是,源代碼編譯產(chǎn)生的目標(biāo)代碼文件(可執(zhí)行文件或class文件)中的編碼方式屬于外碼。

先看一下內(nèi)碼

JVM中內(nèi)碼采用UTF16。早期,UTF16采用固定長(zhǎng)度2字節(jié)的方式編碼,兩個(gè)字節(jié)可以表示65536種符號(hào)(其實(shí)真正能表示要比這個(gè)少),足以表示當(dāng)時(shí)unicode中所有字符。但是隨著unicode中字符的增加,2個(gè)字節(jié)無(wú)法表示所有的字符,UTF16采用了2字節(jié)或4字節(jié)的方式來(lái)完成編碼。Java為應(yīng)對(duì)這種情況,考慮到向前兼容的要求,Java用一對(duì)char來(lái)表示那些需要4字節(jié)的字符。所以,java中的char是占用兩個(gè)字節(jié),只不過(guò)有些字符需要兩個(gè)char來(lái)表示。

外碼

Java的class文件采用UTF8來(lái)存儲(chǔ)字符,也就是說(shuō),class中字符占1~6個(gè)字節(jié)。

Java序列化時(shí),字符也采用UTF8編碼,占1~6個(gè)字符。

總結(jié):

  • java中內(nèi)碼(運(yùn)行內(nèi)存)中的char使用UTF16的方式編碼,一個(gè)char占用兩個(gè)字節(jié),但是某些字符需要兩個(gè)char來(lái)表示。所以,一個(gè)字符會(huì)占用2個(gè)或4個(gè)字節(jié)。

  • java中外碼中char使用UTF8的方式編碼,一個(gè)字符占用1~6個(gè)字節(jié)。

  • UTF16編碼中,英文字符占兩個(gè)字節(jié);絕大多數(shù)漢字(尤其是常用漢字)占用兩個(gè)字節(jié),個(gè)別漢字(在后期加入unicode編碼的漢字,一般是極少用到的生僻字)占用四個(gè)字節(jié)。

  • UTF8編碼中,英文字符占用一個(gè)字節(jié);絕大多數(shù)漢字占用三個(gè)字節(jié),個(gè)別漢字占用四個(gè)字節(jié)。

EOF

以上是java中char占用的字節(jié)是多少的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI