3 回答

TA貢獻1801條經驗 獲得超8個贊
Unicode是一種字符集(charset),不是編碼(encoding),談不上有幾個字節,只能說有多少個碼位。
同一個碼位有N多種不同表示方式,例如Windows記事本中的Unicode其實指Unicode的UTF-16 LE表示方式,Unicode (Big Endian)指UTF-16 BE表示方式。

TA貢獻1868條經驗 獲得超4個贊
英文也是unicode的一部分java關鍵字是英文,但是其他可以不是。比如
public class Main { public static String 獲取字符串() { return "你好,中國"; } public static void main(String[] args) throws InterruptedException { System.out.println(獲取字符串()); } }
javac 編譯中有參數可以制定源代碼的編碼 -encoding <encoding> Specify character encoding used by source files
所以源碼用其他編碼都是可以的,最常見的是使用UTF-8.

TA貢獻1874條經驗 獲得超12個贊
Java
字符串在內存中以Unicode
形式存在,再具體一點應該是UTF-16
這種格式。而在源文件和編譯文件中,字符串則可以以各種可支持的編碼形式存在。簡單的說,存在文件中的字符串是多種編碼的,在它們被裝載到內存時,都轉換成了UTF-16
的編碼,所以說Java
中字符串是統一編碼的,這個統一是指在內存中統一。
另外,標準的Unicode
占用的是4字節,并不是2字節,Java
采用的UTF-16
是優化存儲后的Unicode
,UTF-16
對于常規字(包括全世界各種語言的文字)都可以以2字節存儲,當然也有一些不在常用字范圍的東西(在Unicode
字符平面中靠后的)需要用4字節來存儲,比如Emoji
表情符號等。
添加回答
舉報