1.概述
網上或書上都說是Java中的char占用2個字節,一直沒有深入,直到接觸了編碼,才對此產生了疑問,今天來深入一下這個問題。
2.答疑
char在設計之初的時候被用來存儲字符,可是世界上那么多字符,如果有1個字節,就意味着只能存儲256中,顯然不合適,而如果有兩個字節呢,那么就可以存儲2^16(65536)種,這個數量符合大多數國家的語言字符個數於是Java團隊使用unicode作為編碼,一個char作為2個字節來存儲。
但是unicode只是一個標准,具體的實現還是有如:UTF-8或UTF-16等編碼。
Java的char一定是2個字節嗎?
不一定,與我們使用的字符集有關系,如果使用ASCII編碼集,那么char占用一個字節,如果使用UTF-8編碼格式呢?UTF-8是不定長編碼,編碼的長度是動態的,所以不一定。
char能存儲中文嗎?
這個問題依舊歸結於使用的編碼集,如果使用ASCII,那肯定不能存儲,如果采用UTF-8,那可以。
3.總結
char的長度和是否能存儲中文字符是和編碼格式有關的。對於我們在編碼的時候如果跨平台編碼時,應該在編碼、解碼的時候設置對應的格式,防止由於編解碼導致的異常。
