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