4
領域據我們都知道Java對象的字段以這種方式被初始化的初始initialiazation:哪些機制負責在Java中
- 布爾變量得到
false
- 其他原始類型(如int,字節,長的,)獲得
0
- 對象獲得
null
我的問題是機制(方法)就是幹這個工作和W母雞是否這樣做?
領域據我們都知道Java對象的字段以這種方式被初始化的初始initialiazation:哪些機制負責在Java中
false
0
null
我的問題是機制(方法)就是幹這個工作和W母雞是否這樣做?
這些初始化是在JVM創建類的新實例時完成的。請參閱Creation of new class instances部分。它指出:
每當創建一個新的類的實例,存儲空間分配 它與空間中的類 類型聲明的所有實例變量,並在 類的每個超類聲明的所有實例變量類型,包括可能隱藏的所有實例變量 (第8.3節)。
如果沒有足夠的空間可用於爲 對象分配內存,然後創建類實例的與 的OutOfMemoryError突然結束。否則,新對象 中的所有實例變量(包括超類中聲明的那些變量)都會初始化爲 其默認值(§4.12.5)。
的默認值是針對每種類型的實例變量的如下:
- 對於
byte
類型,默認值是零,即,(byte)0
值。- 對於類型
short
,默認值爲零,即值爲(short)0
。對於類型int
,默認值爲零,即0
。對於類型long
,默認值爲零,即0L
。對於類型float
,默認值爲正零,即0.0f
。- 對於
double
類型,默認值爲正零,即0.0d
。- 對於
char
類型,默認值爲空字符,即'\u0000'
。- 對於
boolean
類型,默認值爲false
。- 對於所有
reference types
(§4.3),默認值爲null
。
如此看來,這使得它的JVM'new'關鍵字試圖通過分配該對象所需的空間來創建所選類的新對象(和它的超類,它的父類,依此類推,直至對象) *將字段值設置爲「零」*。然後在構造函數中初始化「更正」值。我誤解了一些東西嗎? – Pshemo
@Pshemo關鍵字'new'是創建對象的方法之一。它創建的對象使JVM能夠分配所需的空間並將字段的值設置爲「default」。是的,你的話是正確的:然後初始化爲分配的值出現在'constructor'或者'instance initializer'中。 –
@Pshemo謝謝。這似乎是bCONSTRUCTOR!正在這樣做。 –