您好,登錄后才能下訂單哦!
這篇文章主要介紹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è)資訊頻道!
免責(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)容。