深入java虛擬機(jī)第5章, class文件常量池中字符串類urf8格的存儲(chǔ)格式關(guān)鍵字: jvmjava虛擬機(jī)在class文件中對(duì)應(yīng)類型的常量池中使用了一種類似utf8格式的變體來(lái)存儲(chǔ)一個(gè)常量字符串。 (這里請(qǐng)不要和java se的string api搞混淆,這里談的是class文件的文件格式問(wèn)題,我這里只是感覺(jué)這種方式比較節(jié)省空間,故拿出來(lái)請(qǐng)大家看一下。)
utf-8編碼模式允許字符串中的所有unicode字符以2個(gè)字節(jié)的形式表示,而ascii碼(空字符null除外)以一個(gè)字節(jié)表示。
從'\u0001’到'、'\u007f'的所有字符都使用一個(gè)字節(jié)表示。 字節(jié)0: 0 6543210
空字符null('\u0000')和從'\u0080'到'\u07ff'的所有字符使用兩個(gè)字節(jié)表示。 字節(jié)0:1 1 1 10 9 8 7 6 字節(jié)1:1 0 5 4 3 2 1 0
從'\u0800'到'\uffff'的所有字符使用3個(gè)字節(jié)表示。 字節(jié)0:1 1 1 15 14 13 12 字節(jié)1:1 0 11 10 9 8 7 6 字節(jié)2:1 0 5 4 3 2 1 0 |
|