类文件结构(一)

Java代码:

package org.fenixsoft.clazz;

 

public class TestClass{

 

       private int m;

 

       public int inc(){

              return m+1;

       }

}

Javap 反编译:

类文件结构(一)_第1张图片

 

Class16进制:

类文件结构(一)_第2张图片

常量池:

 

CA FE BA BE魔数(固定值)

00 00 次版本 转换10进制0

00 33 主版本 转换10进制为51,版本号51.0对应JDK 1.7.0

00 13 常量池常量有18项常量,索引值范围1-18,以下为1-18索引对应:

0A 常量池的项目类型标志为10,类型为constant_methodref_info(类中的方法的符号引用)

00 04  下标4

00 0F  下标15

09 常量池的项目类型标志为9,类型为constant_fieldref_info(字段的符号引用)

00 03 下标3

00 10 下标16

07 常量池的项目类型标志为7,类型为constant_class_info(类或接口的符号引用)

00 11 下标17

07 常量池的项目类型标志为7,类型为constant_class_info(类或接口的符号引用)

0012 下标18

01 常量池的项目类型标志为1,类型为constant_utf8_info(utf-8编码的字符串)

00 01 字符串长一个字节

6D   10进制109=”m”

01 常量池的项目类型标志为1,类型为constant_utf8_info(utf-8编码的字符串)

00 01 字符串长一个字节

49   10进制73=”I”

01 常量池的项目类型标志为1,类型为constant_utf8_info(utf-8编码的字符串)

00 06 字符串长六个字节

3C 69 6E 69 74 3E       10进制60 105 110 105 116 62 的ASCII码对应“

01 常量池的项目类型标志为1,类型为constant_utf8_info(utf-8编码的字符串)

00 03 字符串长三个字节

28 29 56   10进制40 41 86的ASCII码对应”()V”

01 00 04 43 6F 64 65  同上字符串类型4字节为”Code”

01 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 同上字符串类型15字节为” LineNumberTable”

01 00 03 69 6E 63 同上字符串类型3个字节为”inc”

01 00 03 28 29 49 同上字符串类型3个字节为”()I”

01 00 0A 53 6F 75 72 63 65 46 69 6C 65   同上字符串类型10个字节为” SourceFile”

01 00 0E 54 65 73 74 43 6C 61 73 73 2E 6A 61 76 61   同上字符串类型14个字节为”TestClass.java”  

0C  标志为12,类型为constant_NameAndType_info(字段或方法的部分符号引用)               

00 07 00 08   下标7和8对应

0C 标志为12,类型为constant_NameAndType_info(字段或方法的部分符号引用)

00 05 00 06   下标5和6对应

01 00 19  标志1字节长25

63 6F 6D 2F 6A 78 6A 2F 77 6F 72 64 50 69 63 2F 54 65 73 74 43 6C 61 73 73 对应字符串” com/jxj/wordPic/TestClass”

01 00 10  标志1字节长16

6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74  对应字符串”java/lang/Object”

常量池结束

你可能感兴趣的:(java)