Java 不同型別屬性在位元組碼檔案class中

2021-06-23 09:00:34 字數 2368 閱讀 8323

1. object attribute

publicclass

objectattribute

--> constant pool

會出現constant_fieldref_info條目,其中

包含了屬性的類目和名稱型別

such as:

[16] constant_fieldref_info

class name: cp_info #1

name and type: cp_info #21

--> fields

如下,有對應的屬性相關的描述

[1] stringvalue

name: cp_info #7

descriptor: cp_info #8

access flags: 0x0001 [public]

2. final object attribute

public class finalobjectattribute

}

--> constant pool

和其它的型別一樣

--> fields

相對於非

final

的物件屬性,

intvalue

和stringvalue

有乙個constantvalue

屬性。請注意只有基本型別和

string

型別在定義時有初始化值時,才有

constantvalue

屬性。integervalue

雖然定義了初始化值

, 但它沒有

constantvalue

屬性。

such as [0] intvalue

generic info:

attribute name index: cp_info #7

attribute length: 2

specific info:

constant value index: cp_info #8 <0>

--> method

在建構函式init

中,只有i

ntegervalue和doublevalue

初始化**。i

ntvalue

和stringvalue

都沒有出現。

3.class attribute

public

classstaticobjectattribute}

--> constant pool

和其它型別類似

--> fields 除了

access flags

是0x0009 [public static]

,其它和非

final

的object attribute

such as 

[0] intvalue

name: cp_info #5

descriptor: cp_info #6

access flags: 0x0009 [public static]

--> method

有乙個cinit

方法來初始化類屬性。

4. final class attribute

publicclass

finalclassvariable

} --> constant pool

和其它型別物件類似

--> fields 和

final

物件屬性類似,但

access flags

是0x0019 [public static final]. constantvalue attributes

也和final

物件類似

--> method

cinit

函式和非

final

的class

屬性類似

總結:

對於類屬性的初始化是在cinit方法中,而物件屬性的初始化是在init方法中。

對於final型別,基本型別(int, long,…)和string型別如果在定義是有初始化值,會有乙個constantvalue屬性,而且這些型別的屬性不會出現在cinit方法和init方法(如果沒有explicitly 在靜態初始化**塊或者建構函式中引用)。

HttpServlet在不同型別時獲取引數方式

獲取引數的方式 1 request.getparameter 2 request.getinputstream 3 request.getreader 預設編碼方式 時 編碼後的結果通常是field1 value2 field2 value2 的形式,如 name aaaa password bbb...

不同型別資料之間在進行運算時,結果型別應該如何確定

不同型別的資料進行運算,如果乙個運算子兩側的資料型別不同,需要先自動進行型別轉換,使兩者具有同一型別,然後進行運算,現將規律總結如下 系統有預設的轉化規則,就是從精度底的轉化為精度高的,避免計算時精度的丟失 具體轉換規則如下 char short int unsigned long unsigned...

泛型陣列Java(陣列中存入不同型別的元素)

定義乙個操作類operation,操作類的屬性是泛型類data operation類構造陣列data,data的元素可以例項化為不同的型別 泛型類 作為陣列的元素可以例項化成各種型別 class data public void setdata t data public t getdata pub...