什么是Class文件规范?

本文重点

前面我们说了JVM就是class的规范实现,那么class规范究竟是什么呢?本文进行详细的介绍

class文件

首先我们需要知道当javac将文件编译为class文件之后,此时的class文件其实是二进制(要么0要么1),但是如果我们将其转变为16进制之后,它的形式就清晰一些,如下所示。

也就是说class文件就是上面的内容,这些内容不是随便写的,class的结构是被严格限制的,哪个字节代表什么含义,长度是多少,先后顺序如何,都不允许改变。下面我们简单介绍一下class文件中每一部分的含义是什么?

含义

class文件中包含下面的内容:

  • Magic Number——魔数:确定这个文件是否为一个能够被虚拟机接受的Class文件(cafe babe)
  • Minor Version——class文件的版本号(0000)
  • Major Version——class文件的版本号(0034)
  • constant_pool_count——常量池容量计数值,常量池可以理解为Class文件之中的资源仓库(0010),有constant_pool_count-1个常量,对于本例来说就是16-1=15个常量。
  • constant_pool——常量池的具体内容,长度为constant_pool_c

猜你喜欢

转载自blog.csdn.net/huanfeng_AI/article/details/131970567