1. 程式人生 > >java基礎(三)陣列

java基礎(三)陣列

從陣列開始,java就開始和c變得不一樣了,java裡定義一個數組是這樣的:

  • 動態初始化 int arr = new int[3];
  • 靜態初始化 int arr = new int[]{1,2,3};

這裡先提一下棧和堆的概念

  • 棧----存放區域性變數,每一個方法稱之為"棧幀",方法出入棧就像子彈入膛一樣,先進後出
  • 堆----存放物件例項(new出來的東西),預設給初始化值,所有整數型別預設是0,小數是0.0,布林是false,引用資料型別是null

這兩行程式碼寫下之後發生了什麼事情呢?JVM首先會在棧裡建立變數arr,然後去堆裡分配3個int大小的空間並賦預設值,接著把分配空間的地址值賦給arr,然後通過arr就可以存值取值. 換句話說arr並沒有存放陣列值,而是記錄了陣列的地址值,所以在java中陣列是引用資料型別.

寫到這裡,我發現這個過程像極了c,java對陣列的操作,本質也是通過指標完成的.例如arr[2]=3就相當於(*arr+2)=3,本質上就是直接對地址進行操作.

二維陣列

  • int[][] arr = new int[4][5];/ int[] arr[] = new int[4][5];
  • int [][] arr = {{1,2},{3,4,5},{6,7,8,9}};