3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
Java
字符串在內(nèi)存中以Unicode
形式存在,再具體一點(diǎn)應(yīng)該是UTF-16
這種格式。而在源文件和編譯文件中,字符串則可以以各種可支持的編碼形式存在。簡(jiǎn)單的說,存在文件中的字符串是多種編碼的,在它們被裝載到內(nèi)存時(shí),都轉(zhuǎn)換成了UTF-16
的編碼,所以說Java
中字符串是統(tǒng)一編碼的,這個(gè)統(tǒng)一是指在內(nèi)存中統(tǒng)一。
另外,標(biāo)準(zhǔn)的Unicode
占用的是4字節(jié),并不是2字節(jié),Java
采用的UTF-16
是優(yōu)化存儲(chǔ)后的Unicode
,UTF-16
對(duì)于常規(guī)字(包括全世界各種語言的文字)都可以以2字節(jié)存儲(chǔ),當(dāng)然也有一些不在常用字范圍的東西(在Unicode
字符平面中靠后的)需要用4字節(jié)來存儲(chǔ),比如Emoji
表情符號(hào)等。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
Unicode是一種字符集(charset),不是編碼(encoding),談不上有幾個(gè)字節(jié),只能說有多少個(gè)碼位。
同一個(gè)碼位有N多種不同表示方式,例如Windows記事本中的Unicode其實(shí)指Unicode的UTF-16 LE表示方式,Unicode (Big Endian)指UTF-16 BE表示方式。

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
英文也是unicode的一部分java關(guān)鍵字是英文,但是其他可以不是。比如
public class Main {
public static String 獲取字符串() {
return "你好,中國(guó)";
}
public static void main(String[] args) throws InterruptedException {
System.out.println(獲取字符串());
}
}
javac 編譯中有參數(shù)可以制定源代碼的編碼 -encoding <encoding> Specify character encoding used by source files 所以源碼用其他編碼都是可以的,最常見的是使用UTF-8.
添加回答
舉報(bào)