1. 程式人生 > >java 中一個char包含幾個字節

java 中一個char包含幾個字節

導致 sdn col 會有 2個 tar 防止 clas 記得

背景

??char包含幾個字節可能記得在上學的時候書上寫的是2個字節,一直沒有深究,今天我們來探究一下到底一個char多少個字節?

Char

??char在設計之初的時候被用來存儲字符,可是世界上有那麽多字符,如果有1個字節,那麽就意味著只能存儲256中,顯然不合適,而如果有兩個字節,那麽就可以存儲65536種。這個數量符合大多數國家的語言字符的個數。於是Java團隊默認使用unicode作為編碼,一個char作為2個字節來存儲。
??這裏就有兩個問題了?
????1. java的char一定會有兩個字節嗎?
????2. 中文字符可以存儲在char裏面嗎?
??先來回答第一個問題。char一定是兩個字節嗎?不是的,這個跟我們選用的字符編碼有關,如果采用”ISO-8859-1”編碼,那麽一個char只會有一個字節。如果采用”UTF-8”或者“GB2312”、“GBK”等編碼格式呢?這幾種編碼格式采用的是動態長度的,如果是英文字符,大家都是一個字節。如果是中文,”UTF-8”是三個字節,而”GBK”和”GB2312”是兩個字節。而對於”unicode”而言,無論如何都是兩個字節。
??然後再回答第二個問題,對於一個char如果用”ISO-8859-1”來存儲的話,肯定無法存儲一個中文,而對於”UTF-8”、“GB2312”、“GBK”而言大多數中文字符是可以存儲的。

總結

??char的長度和是否能存儲中文字符是和編碼格式有關的。對於我們在編碼的時候如果跨平臺編碼時,應該在編碼、解碼的時候設置對應的格式,防止由於編解碼導致的異常。

考點:劍指Offer----第一個只出現一次的字符

java 中一個char包含幾個字節