Java常量項(xiàng)的類(lèi)型表

常量項(xiàng)的類(lèi)型和tag取值

tag值 常量項(xiàng)類(lèi)型 含義
1 CONSTANT_Utf8 用于存儲(chǔ)字符串的常量項(xiàng)。該項(xiàng)真正包含了字符串內(nèi)容。而 CONSTANT_String 常量項(xiàng)只存儲(chǔ)了一個(gè)指向 CONSTANT_Utf8 項(xiàng)的索引。
2
3 CONSTANT_Integer Java中,int 和 float 型數(shù)據(jù)的長(zhǎng)度都是4個(gè)字節(jié)。這兩種常量分別代表 int 和 float 型數(shù)據(jù)信息。
4 CONSTANT_Float
5 CONSTANT_Long Java中, long 和 double 型數(shù)據(jù)的長(zhǎng)度都是8個(gè)字節(jié)。這兩種常量分別代表 long 以及 double 型數(shù)據(jù)信息。
6 CONSTANT_Double
7 CONSTANT_Class 代表類(lèi)或接口的信息。
8 CONSTANT_String 代表一個(gè)字符串(String)。該常量本身不存儲(chǔ)字符串的內(nèi)容,它只是存儲(chǔ)了一個(gè)索引值。
9 CONSTANT_Fieldref 存儲(chǔ)成員變量的信息。信息包括所屬類(lèi)的類(lèi)名、變量、函數(shù)名、函數(shù)參數(shù)、返回值等。
10 CONSTANT_Methodref 存儲(chǔ)成員函數(shù)的信息。信息包括所屬類(lèi)的類(lèi)名、變量、函數(shù)名、函數(shù)參數(shù)、返回值等。
11 CONSTANT_InterfaceMethodref 存儲(chǔ)接口函數(shù)的信息。信息包括所屬類(lèi)的類(lèi)名、變量、函數(shù)名、函數(shù)參數(shù)、返回值等。
12 CONSTANT_NameAndType 這種類(lèi)型的常量項(xiàng)用于描述類(lèi)的成員域或成員函數(shù)相關(guān)的信息。
13
14
15 CONSTANT_MethodHandle 用于描述 MethodHandle 信息。MethodHandle 和反射有關(guān)系。Java類(lèi)庫(kù)中對(duì)應(yīng)的類(lèi)為 java.lang.invoke.MethodHandle 。
16 CONSTANT_MethodType 用于描述一個(gè)成員函數(shù)的信息。只包括函數(shù)的 參數(shù)類(lèi)型 和 返回值 ,不包括函數(shù)名和所屬類(lèi)的類(lèi)名。
17
18 CONSTANT_InvokeDynamic 用于 invokeDynamic 指令。invokeDynamic 和 Java 平臺(tái)上實(shí)現(xiàn)了一些動(dòng)態(tài)語(yǔ)言(如Python)相類(lèi)似的有關(guān)功能。

常見(jiàn)的常量項(xiàng)內(nèi)容

常量項(xiàng)名稱 數(shù)據(jù)結(jié)構(gòu) 說(shuō)明
大小 名稱
CONSTANT_Utf8_info u1 tag
u2 length
u1 bytes[ length ]
CONSTANT_Class_info u1 tag
u2 name_index 指向 CONSTANT_Utf8_info
CONSTANT_Fieldref_info u1 tag
u2 class_index
u2 name_and_type_index
CONSTANT_String_info u1 tag
u2 string_index 指向 CONSTANT_Utf8_info
CONSTANT_MethodType_info u1 tag
u2 descriptor_index 指向 CONSTANT_Utf8_info
CONSTANT_Methodref_info u1 tag
u2 class_index
u2 name_and_type_index
CONSTANT_NameAndType_info u1 tag
u2 name_index 指向 CONSTANT_Utf8_info
u2 descriptor_index 指向 CONSTANT_Utf8_info
CONSTANT_InterfaceMethodref_info u1 tag
u2 class_index
u2 name_and_type_index
CONSTANT_Long_info u1 tag
u4 high_bytes
u4 low_bypes
CONSTANT_Integer_info u1 tag
u4 bytes
CONSTANT_Double_info u1 tag
u4 high_bytes
u4 low_bypes
CONSTANT_Float_info u1 tag
u4 bytes

信息描述規(guī)則

  1. 數(shù)據(jù)類(lèi)型的描述規(guī)則(基本數(shù)據(jù)類(lèi)型 和 引用類(lèi)型)。
  2. 成員變量的描述規(guī)則(Field Descriptor)。
  3. 成員函數(shù)的描述規(guī)則(Method Descriptor)。

數(shù)據(jù)類(lèi)型描述規(guī)則

數(shù)據(jù)類(lèi)型對(duì)照表
數(shù)據(jù)類(lèi)型 類(lèi)型描述符
byte B
char C
double D
float F
int I
short S
long **J **(引用類(lèi)型已用L)
boolean Z (byte類(lèi)型已用B)
引用類(lèi)型 LClassName;如:Ljava/lang/String;
數(shù)組 [ 其他數(shù)據(jù)類(lèi)型描述符

成員變量描述規(guī)則

與數(shù)據(jù)類(lèi)型描述規(guī)則相同。BaseType | ObjectType | ArrayType

成員函數(shù)描述規(guī)則

( ParameterDescriptor )ReturnDescriptorParameterDescriptor :FieldTypeReturnDescriptor:FieldType | VoidDescriptor ( V 代表 Void )

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容