六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 41|回复: 0

深入java虚拟机第5章, class文件常量池中字符串类urf8格的存储格式

[复制链接]

升级  36%

26

主题

26

主题

26

主题

秀才

Rank: 2

积分
104
 楼主| 发表于 2013-2-4 21:49:05 | 显示全部楼层 |阅读模式
java虚拟机在class文件中对应类型的常量池中使用了一种类似utf8格式的变体来存储一个常量字符串。
(这里请不要和java se的string api搞混淆,这里谈的是class文件的文件格式问题,我这里只是感觉这种方式比较节省空间,故拿出来请大家看一下。)
 
 
utf-8编码模式允许字符串中的所有unicode字符以2个字节的形式表示,而ascii码(空字符null除外)以一个字节表示。
 
从'\u0001’到'、'\u007f'的所有字符都使用一个字节表示。
字节0: 06543210
 
空字符null('\u0000')和从'\u0080'到'\u07ff'的所有字符使用两个字节表示。
字节0:1 1 1  10 9 8 7 6
字节1:1 0 5 4 3 2 1 0
 
从'\u0800'到'\uffff'的所有字符使用3个字节表示。
字节0:1 1 1  15 14 13 12
字节1:1 0 11 10 9 8 7 6
字节2:1 0 5 4 3 2 1 0
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表