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

`.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

IDEA `jclasslib` Class

`jclasslib`
Class
### 2.1 Magic Number
```java
u4 magic; //Class
```
Class 4 Magic Number,** Class **
### 2.2 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
### 2.3 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 )
### 2.4 (Access Flags)
Class `public` `abstract` `final`
:

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

### 2.5 This ClassSuper ClassInterfaces
```java
u2 this_class;//
u2 super_class;//
u2 interfaces_count;//
u2 interfaces[interfaces_count];//
```
Java `java.lang.Object` java `java.lang.Object` Java 0
`implements` (`extends`)
### 2.6 Fields
```java
u2 fields_count;//Class
field_info fields[fields_count];//
```
field info
**field info() :**

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

### 2.7 Methods
```java
u2 methods_count;//Class
method_info methods[methods_count];//
```
methods_count method_info
Class
**method_info() :**

** access_flag **

`volatile``transient``synchronized``native``abstract`
### 2.8 Attributes
```java
u2 attributes_count;//
attribute_info attributes[attributes_count];//
```
Class Class Java
##
-
-
-
- Java