2 魔数与Class文件的版本

每个Class文件的头4个字节称为魔数(Magic Number),唯一的作用是确定这个文件是否为一个能被虚拟机接受的class文件,魔数的值为0xCAFEBABE

紧接着魔数的四个字节存储的是Class文件的版本号,第5和第6个字节是次版本号,第7和第8个字节是主版本号(Major Version)。高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本号的Class文件。

测试代码:

public class TestClass{
    private int m;
    public int itc(){
        return m + 1;
    }
}

在JDK1.8下进行编译,以十六进制的形式打开Class文件

可以清楚地看到,开头4个字节的十六进制表示是0xCAFEBABE,此版本号的第5个第6个字节的值为0x0000,而主版本号的值为0x0034,也就是十进制的52,该版本号说明这个文件是可以被JDK1.8或以上版本虚拟机执行的Class文件。