字节码文件

概述

    .java源文件经过编译生成的.class便是字节码文件,但还不能被系统直接执行,通过JVM解释翻译后才可以被底层系统执行。

字节码文件构成部分

    1.魔数:头四个字节,CAFEBABE


    2.文件版本:java版本1.8 = 52,1.7 = 51……


    3.常量池:包含两部分 -- 字面量与符号引用

        ① 字面量:字符串文本、用final修饰的基本数据类型的值。(如申明的:String s = "abc";中的"abc",int i = 1;中的1)。大白话:字面量是在编译期间就已有确定值的数据。

        ② 符号引用:类、接口、方法、字段的全名与描述符。在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替。在类加载器链接阶段时才替换为具体的实际内存地址,即直接引用。


    4.访问标志:(类、属性、方法)的访问标志

        是class还是interface,是否public,是否abstract,是否定义了final等等。


    5.类/父类索引与接口索引集合

        类、父类、接口集合的全限定名。


    6.字段表集合

        声明的类变量与实例变量的描述与结构。


    7.方法表集合

        声明的方法的描述与结构。


    8.属性表集合

        描述class文件,字段表,方法表某些场景专有的信息。


字节码文件中几乎所有组成部分的文本描述都存在于常量池中。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容