1、魔数
我们可以利用editplus,以16进制的编码格式来查看class文件的结构,具体操作方法为在editplus的工具栏中点击Edit,下拉选择Hex Viewer即可。
![debe3bb7a65cda8d6f47f2bdfca6ab5e.png](https://i-blog.csdnimg.cn/blog_migrate/db8977f45508b2ccb74e8e3d069236df.jpeg)
如图所示,前四(4个bit位*8个字母=32,32/8=4字节)个字节为0xCAFEBABE,这就是class文件的魔数。
虚拟机借助魔数,用来识别.class 文件,虚拟机在加载类文件之前会先检查魔数,如果不是 0xCAFEBABE 则拒绝加载该文件。
关于class文件魔数的由来,可以参考这篇文章class文件魔数CAFEBABE的由来
2、版本号
版本号分为副版本号(minor version)与主版本号(major version),紧随魔数之后。
![c602c07cdae2eccd133868a0f72ed85d.png](https://i-blog.csdnimg.cn/blog_migrate/a8232d9f93699e90adeb20028fcbaa89.jpeg)
可以看到主版本号为52(3*16+4),52对应的java版本为java8,规律就是java版本=主版本号-44。例如主版本号50对应的j