1. 程式人生 > >Java中的陣列和記憶體分配

Java中的陣列和記憶體分配

理解陣列

  • 概念:陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器。
    陣列既可以儲存基本資料型別,也可以儲存引用資料型別,只要所有的陣列元素具有相同的資料型別即可
  • 定義陣列的方法
    ①:type[] arrayName;(推薦使用這種方式)
    ②:type arrayName[];
    注意:定義陣列時不能指定陣列的長度
  • 陣列的初始化
    Java中的陣列必須先初始化,才能使用,初始化就是給陣列中的元素分配記憶體空間和賦值
    ①:靜態初始化:初始化時指定每個陣列元素的初始值,由系統決定陣列長度。
    語法格式:
    arrayName = new type[]{element1, element2, element3, ...};

    或者簡寫成:type[] arrayName = new type{element1, element2, element3, ...};(在定義時直接完成初始化)
    例如:int[] intArr = new int[]{1, 2, 3, 4};
    或者: int[] intArr = {1,2,3,4};
    ②:動態初始化:只指定陣列的長度,由系統為每個陣列元素分配預設值
    格式:type[] arrayName = new type[length];
    舉例:int[] intArr = new int[3];
    說明:定義了一個int型別的陣列,這個陣列可以存放3個int型別的值

二維陣列

定義二維陣列的三種格式:

  1. type arrayName[][] = new type[m][n];
  2. type[][] arrayName = new type[m][n];//推薦
  3. type[] arrayName[] = new type[m][n];

舉例:
定義一個二維陣列,int[][] arr = new int[3][2],二維陣列中有3個一維陣列,分別為arr[0],arr[1],arr[2],這三個一維陣列又分別包含兩個元素,比如陣列arr[0]中有兩個元素,分別為arr[0][0]arr[0][1]
說明:二維陣列就是陣列中的陣列


Java中的記憶體分配問題

我們知道,變數的初始化需要在記憶體中分配記憶體,所以,為了提高記憶體的執行效率,對記憶體空間 進行了不同區域的劃分,每一份區域都有特定的處理資料和記憶體管理的方式;
Java中的記憶體結構:棧、堆、方法區、本地方法區、暫存器

  1. 棧記憶體:暫時儲存,用於儲存區域性變數,當資料使用完,所佔空間會自動釋放。
  2. 堆記憶體:儲存陣列和物件,通過 new 建立的例項都存放在堆記憶體中,任何的”引用資料型別”的”值”都存在堆裡。
  3. 方法區:靜態儲存區、建構函式、常量池、執行緒池,方法位元組碼
  4. 本地方法區:被系統佔用,window 系統佔用 ,被定義為 native 的方法
  5. 暫存器:儲存正要準備交給 CPU 處理的位元組碼

這裡寫圖片描述