访问标志的位置:在常量池结束之后的两个字节(16位)表示访问标志access_flags。
访问标志的作用:用于标识类或者接口层次的访问信息;比如该Class是类还是接口,是否为public类型、是否为abstract类型、是否是final类型等等。
访问标志的类型:参考博客《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
那么我们下面看一个具体的代码来分析一下:
public class HelloWorld{
private int m;
public int intc(){
return m + 1;
}
}
我们把他编译成class文件
C:UsersxiaoqiuDesktop>javac HelloWorld.java
我们可以通过javap -verbose工具分析得知最后一个常量为java.lang.object
我们在class文件中找到java.lang.object
可以推测0x0021 = 0x0001 | 0x0020 通过查表可以直到0x0001表示ACC_PUBLIC ,0x0020表示ACC_SUPER
同时我们还可以利用javap -verbose查看访问标志