
char型變量中能不能存貯一個中文漢字。確定下一個漢字到底占幾個字符?
char類型可以存儲一個中文漢字。因為Java中char的編碼方式為UTF-16BE。UTF-16編碼使用2或者4字節(jié),在65536以內(nèi)的占兩個字節(jié)。而基本上所有中文的Unicode編碼在19968到40869之間——既Unicode至少包含了20902個漢字,所以一個char類型可以存儲一個漢字。
占用的字節(jié)
GB2312
GB2312標(biāo)準(zhǔn)主要針對的是簡體中文常見字符,包括約7000個漢字,不包括一些罕用詞,不包括繁體字。
GBK
GBK建立在GB2312的基礎(chǔ)上,向下兼容GB2312,也就是說,GB2312編碼的字符和二進(jìn)制表示,在GBK編碼里是完全一樣的。需要注意的是,低位字節(jié)是從0x40也就是64開始的,也就是說,低位字節(jié)最高位可能為0。
GB18030
GB18030向下兼容GBK,增加了五萬五千多個字符,共七萬六千多個字符。包括了很多少數(shù)民族字符,以及中日韓統(tǒng)一字符。
Big5
Big5是針對繁體中文的,廣泛用于臺灣香港等地。
Big5包括1萬3千多個繁體字,和GB2312類似,一個字符同樣固定使用兩個字節(jié)表示。在這兩個字節(jié)中,高位字節(jié)范圍是0x81-0xFE,低位字節(jié)范圍是0x40-0x7E和0xA1-0xFE。
總之,byte是1個字節(jié),char是兩個字節(jié),但是char里可以存一個漢字,這么說漢字就占用兩個字節(jié)?String類型里的漢字,按照編碼格式的不同,分為2-4個字節(jié)的占用,UTF-8占用3個字節(jié),特別的占用4個字節(jié)。GBK里漢字確實(shí)是占用2個字節(jié)。UTF-16里漢字一般占2個字節(jié),特殊的是4個字節(jié)。
綜上所述,那要看漢字是以什么編碼格式來存儲了,以及漢字是否為特殊漢字















