一切都是對象數組
操縱的標識符其實是對象的一個「引用」(reference).能夠想象成用遙控(引用)操縱電視機(對象)。spa
對象存儲的地方指針
寄存器對象
這是最快的存儲區,位於處理器內部。寄存器的數量極其有限,因此寄存器根據需求進行分配。不能直接控制,也不能在程序中感受到寄存器存在的任何跡象。(C和C++容許向編譯器建議寄存器的分配方式)生命週期
堆棧內存
位於通用RAM(隨機訪問存儲器)中,經過堆棧指針能夠從處理器得到直接支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放內存。建立程序時,Java系統必須知道存儲在堆棧內全部項的確切生命週期,以便上下移動堆棧指針。某些Java數據存儲於堆棧中——對象引用,Java對象並不存儲與其中。ci
堆編譯器
一種通用的內存池(也位於RAM去),用於存放全部的Java對象。堆不一樣於堆棧的好處是:編譯器不須要知道存儲的數據在堆裏存活多長時間。在堆裏分配存儲有很大的靈活性。用堆進行存儲分配和清理可能比用堆棧進行存儲分配須要更多的時間(若是能夠在棧中建立對象)。編譯
常量存儲table
常量值一般直接存放在程序代碼內部。有時,在嵌入式系統中,常量自己會和其餘部分分隔開,這種狀況下,能夠選擇將其存放在ROM(只讀存儲器)中。
非RAM存儲
若是數據徹底存活於程序以外,那麼它能夠不受程序的任何控制,在程序沒有運行時也能夠存在。其中兩個基本的例子是流對象和持久化對象。在流對象中,對象轉化成字節流,一般被髮送給另外一臺機器。在「持久化對象」中,對象被存放於磁盤上,一次,即便程序終止,它們仍能夠保持本身的狀態。
基本數據類型
基本數據類型的變量直接存儲「值」,並置於堆棧中。
Java的基本數據類型所佔存儲空間大小肯定。這種所佔存儲空間大小的不變形是Java程序比用其餘多數語言編寫的程序更具可移植行的緣由之一。
高精度數字
Java提供了兩個用於高精度計算的類:BigInteger和BigDecimal。兩者沒有對應的基本類型。
BigInteger支持任意精度的整數。
BigDecimal支持任何精度的定點數。
Java中的數組
當建立一個數組對象時,實際上就是建立了一個引用數組,而且每一個引用都會自動被初始化爲一個特定值,該值擁有本身的關鍵字null。在使用任何引用前,必須爲其指定一個對象。存放基本數據類型的數組默認值爲零。
若是字段是對某個對象的引用,那麼必須初始化該引用,以便使其與一個實際對象相關聯。
基本數據類型默認值
基本類型 |
默認值 |
boolean |
false |
char |
'\u0000'(null) |
byte |
(byte)0 |
short |
s(hort)0 |
int |
0 |
long |
0L |
float |
0.0f |
double |
0.0d |
靜態變量、靜態初始化快、變量、初始化快、構造器,它們的初始化順序是
(靜態方法、靜態 初始化快)>(變量、初始化塊)>構造器