分享

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

 goldbomb 2009-01-09

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

关键字: jvm

java虚拟机在class文件中对应类型的常量池中使用了一种类似utf8格式的变体来存储一个常量字符串。

(这里请不要和java se的string api搞混淆,这里谈的是class文件的文件格式问题,我这里只是感觉这种方式比较节省空间,故拿出来请大家看一下。)

 

 

utf-8编码模式允许字符串中的所有unicode字符以2个字节的形式表示,而ascii码(空字符null除外)以一个字节表示。

 

从'\u0001’到'、'\u007f'的所有字符都使用一个字节表示。

字节0: 0 6543210

 

空字符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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多