[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ByteVortex/JavaGuide/main/docs/java/jvm/class-file-structure.md [Back]  [Original]

---
title: 
category: Java
tag:
  - JVM
---

## 

 Java JVM `` `.class` Java  Java Java 

ClojureLisp GroovyScala  Java `.class` Java `.class` [WinHex](https://www.x-ways.net/winhex/) 

![java](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/bg/desktop.png)

`.class` Java  Java 

## Class 

 Java Class  `ClassFile`  C 

`ClassFile` 

```java
ClassFile {
    u4             magic; //Class 
    u2             minor_version;//Class 
    u2             major_version;//Class 
    u2             constant_pool_count;//
    cp_info        constant_pool[constant_pool_count-1];//
    u2             access_flags;//Class 
    u2             this_class;//
    u2             super_class;//
    u2             interfaces_count;//
    u2             interfaces[interfaces_count];//
    u2             fields_count;//Class 
    field_info     fields[fields_count];//
    u2             methods_count;//Class 
    method_info    methods[methods_count];//
    u2             attributes_count;//
    attribute_info attributes[attributes_count];//
}
```

 `ClassFile`  class 

![ClassFile ](https://oss.javaguide.cn/java-guide-blog/16d5ec47609818fc.jpeg)

 IDEA  `jclasslib`  Class 

![](https://oss.javaguide.cn/java-guide-blog/image-20210401170711475.png)

 `jclasslib` 

 Class 

### Magic Number

```java
    u4             magic; //Class 
```

 Class  4 Magic Number,** Class **



### Class Minor&Major Version

```java
    u2             minor_version;//Class 
    u2             major_version;//Class 
```

 Class  5  6 **** 7  8 ****

 Java  Java 8Java9 1 `javap -v`  Class 

 Java  Class  Java  Class  JDK  JDK 

### Constant Pool

```java
    u2             constant_pool_count;//
    cp_info        constant_pool[constant_pool_count-1];//
```

 `constant_pool_count-1`** 1  0  0 **

 Java  final 

- 
- 
- 

 14 ** u1  -tag **

|                              | tag |                    |
| :------------------------------: | :---------: | :--------------------: |
|        CONSTANT_utf8_info        |      1      |   UTF-8    |
|      CONSTANT_Integer_info       |      3      |              |
|       CONSTANT_Float_info        |      4      |            |
|        CONSTANT_Long_info        |           |            |
|       CONSTANT_Double_info       |           |      |
|       CONSTANT_Class_info        |           |      |
|       CONSTANT_String_info       |           |        |
|      CONSTANT_Fieldref_info      |           |          |
|     CONSTANT_Methodref_info      |     10      |      |
| CONSTANT_InterfaceMethodref_info |     11      |    |
|    CONSTANT_NameAndType_info     |     12      |    |
|     CONSTANT_MothodType_info     |     16      |            |
|    CONSTANT_MethodHandle_info    |     15      |            |
|   CONSTANT_InvokeDynamic_info    |     18      |  |

`.class` `javap -v class` (`javap -v class-> temp.txt`  temp.txt )

### (Access Flags)

```java
    u2             access_flags;//Class 
```

 Class  `public`  `abstract`  `final` 

:

![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/.png)

 `Employee` 

```java
package top.snailclimb.bean;
public class Employee {
   ...
}
```

`javap -v class` 

![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/.png)

### This ClassSuper ClassInterfaces

```java
    u2             this_class;//
    u2             super_class;//
    u2             interfaces_count;//
    u2             interfaces[interfaces_count];//
```

Java 

 Java  `java.lang.Object`  Java  `java.lang.Object`  Java  0

 `implements` (`extends`) 

### Fields

```java
    u2             fields_count;//Class 
    field_info     fields[fields_count];//
```

field info

**field info() :**

![ ](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/.png)

- **access_flags:** `public` ,`private`,`protected``static`,transient ,final,volatile 
- **name_index:** 
- **descriptor_index:** 
- **attributes_count:** attributes_count 
- **attributes[attributes_count]:** 



** access_flag :**

![ access_flag ](https://oss.javaguide.cn/JVM/image-20201031084342859.png)

### Methods

```java
    u2             methods_count;//Class 
    method_info    methods[methods_count];//
```

methods_count  method_info 

Class 

**method_info() :**

![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/.png)

** access_flag **

![ access_flag ](https://oss.javaguide.cn/JVM/image-20201031084248965.png)

`volatile``transient``synchronized``native``abstract`

### Attributes

```java
   u2             attributes_count;//
   attribute_info attributes[attributes_count];//
```

 Class  Class  Java 

## 

-  Java 
- Chapter 4. The class File Format - Java Virtual Machine Specification:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
- JAVA CLASS
- Java 1.2.2Class

Web Proxy Viewer  |  New URL  |  Original Page