ORACLE JAVA SE 官方文档

一、class 文件格式

一个 class 文件由一个 ClassFile结构表示,如下图:
image.png
上述图中,所有字段存储了 class file 中的所有内容。

下面简单查看各个字段所代表的含义
点击查看【processon】

二、借助代码和工具简单观察 class file

java 版本
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2.1、代码准备

2.1.1、原始测试代码

  1. package com.zhixing;
  2. /**
  3. * <p> class file format 查看 案例</p>
  4. *
  5. * @author zhixing
  6. */
  7. public class Demo {
  8. private int age ;
  9. private int name;
  10. public int getName(){
  11. return this.name;
  12. }
  13. }

2.1.2、Javac将代码编译成 class 文件

  1. javac Demo.java

2.2、直接查看 class 文件

直接使用 sublime/text打开

2.2.1、魔数(0xCAFEBABE)

magic = 0xCAFEBABE是class 文件格式的校验头部。对应 Demo.class文件16进制内容如下
image.png

2.2.2、版本号

image.png
版本号 = major.minor = 52.0

JDK1.8 默认版本:52.0

2.2.3、以此类推

2.3、借助工具查看 class 文件

借助 idea 插件jclasslib-bytecode-viewer可视化查看 class file format 信息 进入源码:【View -> show bytecode with jclasslib】

image.png
上述描述了 class file format 各个字段描述信息