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

Java陣列及其在記憶體中的分配

1.一維陣列

  • 陣列概念:陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器。它既可以儲存基本資料型別,也可以儲存引用資料型別(後面介紹)。
  • 定義格式1: 資料型別[] 陣列名;
      格式2: 資料型別 陣列名[];
  • 陣列的初始化動態初始化
      陣列的初始化:陣列必須先初始化,然後才能使用,就是為陣列中的陣列元素分配記憶體空間,併為每個陣列元素賦值
      初始化分類:
        (1)動態初始化:只指定長度,由系統給出初始化值;
        (2)靜態初始化:給出初始化值,由系統決定長度。
        注意:這兩種方式只能用一種,不能進行動靜結合。
      動態初始化格式:
        資料型別[] 陣列名 = new 資料型別[陣列長度];
        陣列長度其實就是陣列中元素的個數。

    2.二維陣列

  • 格式1:資料型別[][] 變數名 = new 資料型別[m][n];
      m表示這個二維陣列有多少個一維陣列,n表示每一個一維陣列的元素個數。
      以下格式也可以表示二維陣列(不推薦使用)
        a.資料型別 陣列名[][] = new 資料型別[m] [n];
        b.資料型別[] 陣列名[] = new 資料型別[m] [n];
    格式2:資料型別[] [] 變數名 = new 資料型別[m] [];
    格式3:資料型別[] [] 變數名 = new 資料型別[] []{{元素···},{元素···}....}

    3.陣列在記憶體中的分配

  • 棧:存放區域性變數
      區域性變數:在方法定義中或者方法宣告上的變數。
  • 堆:存放的是所用new出來的東西
      特點:(1)每一個new出來的東西都會為其分配一個地址值;
        (2)每一個變數都有一個預設的值
          byte,short,int,long--0
          float,double---0.0
          char--‘\u0000’
          boolean--false
          引用資料型別--null
        (3)使用完畢就變成了垃圾,等待垃圾回收器對其回收。
  • 方法區
  • 本地方法區(和系統有關)
  • 暫存器(CPU使用)