版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在常量池结束后,紧接着的两个字节代表访问标志(access_flags),这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是类还是接口。是否定义为public类型,是否定义为abstract类型。如果是类的话,是否被声明为final等。具体的标志位以及标志的含义如下图
access_flags中一共有16个标志位可以使用,当前只定义了8个,没有使用的标记一律为0.
案例
public class TestConstant {
private final int a = 10;
private final int b = 10;
private int c = 11;
private int d = 11;
private long e = -11111110005514L;
private long f = -11111110005514L;
private double g = 10.4557848D;
private double h = 10.4557848D;
private String y = "JVM";
private String j = "JVM";
}
编译成class文件,使用UltraEdit打开,可以得到Java编译后的字节码
Access_flags的值为00 21 = 由此推出,0x0001 + 0x0020 = 0x0021,
它的ACC_PUBLIC、ACC_SUPER标志应为真。其余为假。
验证正确。