深入讲解java中.class文件中的常量池

常量池什么?

放置常量的的池,只是这个池是数组


cp_info的结构体为:tag 和info,tag标志它是什么类型的常量,info为它的内容

cp_info结构体分为两类:字面量和引用

根据tag不同有:引用指向字面量的地址Constant_Methodref_info,Constant_Fieldref_info,Constant_Interfaceref_info,Constant_Class_info,Constant_String_info,Constant_NameAndType_info

字面量:存储具体类型的值,ruUTF8存储字符串

Constant_UTF8_info,Constant_Integer_info,Constant_Float_info,Constant_Long_info,Constant_Double_info,

引用的指向:

Constant_Class_info指向Constant_UTF8_info

Constant_Methodref_info,Constant_Fieldref_info,Constant_Interfaceref_info都有连个指向一个是Constant_Class_info,另一个是Constant_NameAndType_info

Constant_NameAndType_info有两个指向一个是名字的Constant_UTF8_info,另一个是类型Constant_UTF8_info


观察常量池:如图,如何查看javap -v 类名(必须先生成.class文件)

深入讲解java中.class文件中的常量池


-------------------------------------------------------------------------

参考:http://blog.****.net/luanlouis/article/details/40148053