Java虚拟机的组成![](https://i-blog.csdnimg.cn/blog_migrate/4115ade941f8ce09dc9f5fea7b691173.png)
以正确的姿势打开文件
⚫
字节码文件中保存了源代码编译之后的内容,以二进制的方式存储,无法直接用记事本打开阅读。
通过NotePad++使用十六进制插件查看class文件:
![](https://i-blog.csdnimg.cn/blog_migrate/2a541a0f2f1d428fe1c4da7af2c66910.png)
推荐使用
jclasslib
工具查看字节码文件。
⚫
Github地址: https://github.com/ingokegel/jclasslib
![](https://i-blog.csdnimg.cn/blog_migrate/e0b80362c5638dc16d29f4b059e8e6f5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/63d09d30e8a8ddfaeb55fa476a038f05.png)
字节码文件的组成部分-Magic魔数
⚫
文件是
无法通过文件扩展名
来确定文件类型的,文件扩展名可以随意修改,不影响文件的内容。
⚫
软件使用文件的头几个字节(文件头)去校验文件的类型,如果软件不支持该种类型就会出错。
⚫
Java字节码文件中,将文件头称为
magic魔数
。
字节码文件的组成部分-主副版本号
⚫
主副版本号指的是编译字节码文件的
JDK
版本号,
主版本号用来标识大版本号,JDK1.0-1.1使用了
45.0-45.3,JDK1.2是46之后每升级一个大版本就加1;副版本号是当主版本号相同时作为区分不同
版本的标识,一般只需要关心主版本号。
⚫
版本号的作用主要是判断当前字节码的版本和运行时的
JDK
是否兼容。