Java 數(shù)組本質(zhì)上是在內(nèi)存中分配的連續(xù)內(nèi)存區(qū)域,用于存儲相同類型元素的集合。數(shù)組元素按照順序存儲在內(nèi)存中,每個元素都占用固定的空間,從 0 開始索引,第一個元素存儲在起始地址處,后續(xù)元素依次存儲在緊隨其后的內(nèi)存地址中。由于元素連續(xù)存儲,訪問數(shù)組元素非常高效,且節(jié)省空間。但數(shù)組長度固定,無法改變,如果未完全填充,則會浪費(fèi)內(nèi)存空間。
Java 數(shù)組存儲
Java 數(shù)組是如何存儲的?
Java 數(shù)組本質(zhì)上是在內(nèi)存中分配的一塊連續(xù)內(nèi)存區(qū)域,用于存儲相同類型元素的集合。數(shù)組元素按照順序存儲在內(nèi)存中,每個元素都占用固定的空間。
詳細(xì)說明
立即學(xué)習(xí)“Java免費(fèi)學(xué)習(xí)筆記(深入)”;
當(dāng)創(chuàng)建一個 Java 數(shù)組時,jvm(Java 虛擬機(jī))會在內(nèi)存中分配一個連續(xù)的內(nèi)存塊來存儲該數(shù)組。數(shù)組的長度是固定不變的,一旦創(chuàng)建,就不能再被改變。
數(shù)組中的每個元素都占據(jù)一個與元素數(shù)據(jù)類型相對應(yīng)的內(nèi)存空間。例如,int 類型元素占據(jù) 4 個字節(jié),double 類型元素占據(jù) 8 個字節(jié)。
數(shù)組索引從 0 開始,因此數(shù)組的第一個元素存儲在內(nèi)存中數(shù)組塊的起始地址處。后續(xù)元素依次存儲在緊隨其后的內(nèi)存地址中。
舉例說明
假設(shè)我們創(chuàng)建一個包含 5 個 int 型元素的數(shù)組:
int[] myArray = new int[5];
JVM 將在內(nèi)存中分配一塊 5 * 4 = 20 個字節(jié)的連續(xù)內(nèi)存區(qū)域來存儲這個數(shù)組。
myArray[0] 存儲在數(shù)組塊的起始地址處,而 myArray[1] 存儲在緊隨 myArray[0] 之后的地址處。依此類推,myArray[4] 存儲在數(shù)組塊的最高地址處。
優(yōu)點
- 快速的元素訪問:由于數(shù)組元素在內(nèi)存中是連續(xù)存儲的,因此訪問數(shù)組中的任何元素都非常高效。
- 節(jié)省空間:與其他數(shù)據(jù)結(jié)構(gòu)(如鏈表)相比,數(shù)組在存儲大量相同類型元素時可以節(jié)省大量空間。
缺點
- 固定長度:一旦創(chuàng)建,數(shù)組的長度就不能改變。如果需要增加或減少數(shù)組大小,則需要創(chuàng)建一個新數(shù)組并復(fù)制元素。
- 內(nèi)存浪費(fèi):如果數(shù)組未完全填充,則會浪費(fèi)一些內(nèi)存空間。