美文网首页
阅读《关于 Hello World 的思考》

阅读《关于 Hello World 的思考》

作者: 普通的程序员 | 来源:发表于2021-02-14 10:54 被阅读0次

    原文地址
    https://mp.weixin.qq.com/s/bodcxEDgUdQwIbF-xa7zgw

    本质是讲类的结构


    image.png

    『class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 class 文件之中,中间没有添加任何分隔符。

    根据 Java 虚拟机规范的规定,class 文件格式采用一种类似于 C 语言的伪结构来存储数据,这种伪结构中只有两种数据类型:无符号数和表。

    无符号数属于基础数据类型,以 u1、u2、u4、u8 来分别代表 1 个字节、2 个字节、4 个字节和 8 个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照 UTF-8 编码构成的字符串值。

    表是由多个无符号数或者其他表作为数据项构成的复合数据结构,所有表都习惯性地以 _info 结尾。表用于描述有层次关系的复合结构的数据,整个 class 文件本质上就是一张表。』

    image.png

    学会使用javap指令查看字节码

    "$ javap -v HelloWorld.class"
    因为是讲结构,包括表啊,常数这些的,所以本文应该是一个很好的入门说明手册,正好最近说需要学习 bytebuddy,asm修改字节码这块。(即使这几个库已经隐藏了他们的内部修改)

    相关文章

      网友评论

          本文标题:阅读《关于 Hello World 的思考》

          本文链接:https://www.haomeiwen.com/subject/cxryxltx.html