类文件结构

五、类文件结构

代码编译的结果从本地机器码变为字节码

JAVA编译器可以把java代码编译成存储字节码的Class文件

Class文件是一组以8位字节为基础单位的二进制流,是一种类似C语言结构体的伪结构,只有两种数据类型:无符号数和表

 

Class文件的组成

1.魔数 身份识别  +版本号

2.常量池 与其他项目关联最多、占据空间最大、class中第一个出现的表类型的数据项目 主要存放两大类常量:字面量和符号引用

2.1字面量一般指字符串常量、final变量等

2.2符号引用包含类和接口的全限定名、字段的名称和描述符、方法的名称和描述符

ps java代码是在JVM加载类的时候动态链接的!

3.访问标志

这个class是类还是接口,是否是public或者abstract或final

4.类索引(确定类的全限定名)、父类索引(确定父类的全限定名)、接口索引(描述这个类实现了哪些接口)

由这三项来确定类的继承关系

5.字段表的集合(描述接口或类中声明的变量不包含方法中的变量)

6.方法表的集合(不包含方法中的代码 代码存在属性表的code属性中)

7.属性表集合

7.1code java方法体中的代码经javac编译后的字节码存放在code属性中

7.2Exception 方法中可能抛出的异常

7.3 LineNumberTable Java 源码行号与字节码行号对应关系

7.4LocalVariableTable 栈帧中局部变量表与源码中定义的变量之间的关系

7.5SourceFile 生成该class文件的源码文件名称

7.6ConstantValue 通知虚拟机自动为静态变量赋值

7.7Inner Class 内部类与宿主类之间的关联

posted @ 2017-07-10 14:37  丨核桃牛奶  阅读(136)  评论(0编辑  收藏  举报