2 字节码文件的组成
-
基础信息
魔数(文件的类型)、字节码文件对应的java版本号访问标识(public、final等)、父类和接口
-
常量池
保存了字符串常量、类和接口名、字段名,主要保存在字节码指令中使用
常量池避免相同的内容重复定义,节约空间。例如:
String str1 = "I love you";
String str2 = "I love you";
-
字段
例如:
private final static int a1 = 0
整个就是一个字段 -
方法
将接口或者类中方法转化为字节码指令
//例:i++,j=j+1,k+=1 所需要的指令数 public class test1 { public static void main(String[] args) { int i = 0, j = 0, k = 0; //i++只需要一条指令 i++; //j=j+1需要4条指令 j = j + 1; //k+=1也只需要一条指令 k += 1; } }
//上面java代码对应字节码 0 iconst_0 1 istore_1 2 iconst_0 3 istore_2 4 iconst_0 5 istore_3 6 iinc 1 by 1 9 iload_2 10 iconst_1 11 iadd 12 istore_2 13 iinc 3 by 1
-
属性
类的属性,比如源代码的文件名、内部类的列表等。例如:
Hello.java
为源代码的文件名,也是类的属性