陣列記憶體堆疊

2021-09-12 09:47:31 字數 1415 閱讀 4891

陣列

用於儲存一組同一資料型別資料的容器

陣列會對放入其中的資料自動編號,編號是從0開始的---下標

定義格式

資料型別 陣列名 = new 資料型別[陣列的大小];---可以先宣告再初始化

int arr = new int[5];---定義了乙個最多能儲存5的整數的陣列

arr[3] = 4;

arr[3]---通過陣列名[下標]的形式來獲取陣列元素或者給對應的位置賦值

資料型別 陣列名 = new 資料型別;

int arr = new int;---在定義好陣列中的初始元素的同時定義好了陣列的大小,不能在改變大小

資料型別 陣列名 = ;---不可以先宣告再初始化

int arr = ;

記憶體棧記憶體、堆記憶體、方法區、本地方法棧(和其他語言互動)、暫存器(彙編)

棧記憶體可以用於儲存變數,棧記憶體對存入其中的變數不會自動賦值,變數在使用完成之後會立即移出棧記憶體釋放空間

堆記憶體用於儲存物件的,堆記憶體對於存入其中的元素會自動的賦予初始值---byte/short/int-0,long-0l;float-0.0f,double-0.0,char- 『\u0000』,boolean-false,引用資料型別的預設值都是null,物件使用完成之後不會立即移出堆記憶體,而是在不定的某個時刻被**

陣列的應用

1. 獲取陣列元素---陣列名[下標]

2. 獲取陣列的長度---陣列名.length

3. 遍歷陣列---通過獲取對應下標來獲取對應位置上的元素----o(n)

for(int i : arr);

int arr2 = new int[8];

system.arraycopy(源陣列,源陣列中的起始下標,目標陣列,存放的起始下標,複製的元素的個數);

源陣列 = arrays.copyof(源陣列,擴容之後的長度);

arr = arrays.copyof(arr,2);

int arr2 = new int[2];

if(擴容之後的長度 < arr.length) else {

system.arraycopy(arr,0,arr2,0,arr.length)

arr = arr2;

注意:如果下標超過範圍,編譯無錯,執行時會出現arrayindexoutofbound***ception---下標越界異常

堆 棧 記憶體(二)

堆 heap 和棧 stack 是c c 程式設計不可避免會碰到的兩個基本概念。首先,這兩個概念都可以在講資料結構的書中找到,他們都是基本的資料結構,雖然棧更為簡單一些。在具體的c c 程式設計框架中,這兩個概念並不是並行的。對底層機器 的研究可以揭示,棧是機器系統提供的資料結構,而堆則是c c 函...

記憶體堆疊結構

只解釋下小端模式,現代計算機通常使用的一種記憶體排列格式 push ebp 儲存上乙個呼叫的棧幀資訊 esp 4 mov ebp,esp push ebx 再分配一些空間,esp 4 mov byte ptr ebp 4 63h c 堆疊上賦值 mov byte ptr ebp 3 6dh m mo...

堆 棧 記憶體溢位

堆與棧的區別,遞迴沒有退出條件會怎樣,系統怎麼判定棧溢位?1,管理方式不同 棧編譯器自動管理,無需程式設計師手工控制 而堆空間的申請釋放工作由程式設計師控制,容易產生記憶體洩漏。2,空間大小不同 棧是一塊連續的記憶體,棧頂的位址和棧底的位址是系統預先規定好的,當申請空間大於剩餘空間,提示溢位 堆是不...