數組可用用於存儲存儲多個數據,Java的數組要求全部的數組元素具備一種相同的數據類型。一旦數組初始化完成,數組在內存中的空間被固定下來,長度不可改變,即便把數組的元素清空,所佔用的空間依然被保留。數組
生活案例:博物架spa
每個物品架都是相同類型的物品,長度不變,即便把物品下架,物品架依然不會改變。內存
使用數組4步走:變量
Java中支持兩種格式的數組定義格式:循環
類型[] 變量名;
類型 變量名[];
例:遍歷
int[] a; int b[]; //兩種方法都行,不過建議使用第一種。
聲明數組也就至關於上面例子中購買了一個定製的物品架(數組)到博物館中,可是尚未肯定物品架的大小(數組的大小),也尚未往物品架上放東西(數組元素)。數據類型
分配空間也就是對數組進行初始化,初始化分爲兩種方式:語法
靜態初始化的語法格式以下:引用
數據類型[] 變量名 = new 數據類型[]{數據1, 數據2,數據3,......};
例:float
int[] a = new int[]{4,2,64,12,3}; //將這些數存放在數組中,數組的大小(長度)爲花括號中元素的數量,該例子中大小爲5 String[] b = new String[]{"張三", "李四", "王五"}; //全部數據的類型必須爲定義的數據類型 int[] c = {2,5,7}; //也可使用這樣的簡寫方式
這就如同購買一個定製的物品架回來,同時將展現品放到物品架中一塊兒購買回來,而物品架的大小就有多少物品就就有多大。
動態初始化是隻指定數組的大小,由系統爲每一個元素指定初始值得一種方式。語法格式以下:
數據類型[] 變量名 = new 數據類型[大小];
在這個格式中, 須要爲其指定一個整數類型的數組大小,指定後,將肯定數據的長度,數組可以存放多少元素。同時爲全部元素指定一個默認初始值。
例:
int[] a = new int[5]; //定義一個數組,長度爲5,也就是說,可以存放5個int類型的數據,同時,默認5個值初始化爲0
初始化時默認值按如下規定設置:
儘管你已經初始化好了數組,可是咱們仍是能夠經過經過賦值的方式改變裏面的數據。那麼已經初始化好了數組,肯定了數組的大小,咱們該如何爲沒一個數組元素賦值呢?
數組中還有一個下標的概念,數組初始化的時候,會爲每一個元素分配一個下標,就和物品展現架上的編號同樣,咱們能夠經過下標爲每一個元素從新賦值。
數組的下標從0開始,也就是說,第一個元素的下標爲0,至於爲何要從0開始,咱們後面再探討一下,咱們先看看賦值的例子:
int[] a = new int[3]; //定義一個長度爲3的int類型數組,裏面3個元素值已默認爲0; a[0] = 4; //設置第一個元素值爲4 a[1] = 5; //設置第二個元素值爲5 a[2] = 7; //設置第三個元素值爲7
首先咱們須要知道的是,程序是在電腦內存中運行的,當咱們的程序開始處理數據時,會在內存中開闢一個小小的空間用來存儲數據,在代碼中也就是定義一個變量,如:
int a = 5;
定義一個int類型變量,值爲五,而在內存中表示爲,在內存中分配一小塊內存,命名爲a,裏面存的值爲5。
而咱們是如經過a這樣一個變量名獲得內存中的值得呢?是由於每一小塊內存都會有一個地址,就如同咱們居住的家有一個地址同樣,經過這個地址,經過這個地址,就能知道里面住的是誰。
二數組在內存中是以相連的位置存儲的,方便對數組的操做,咱們看一個例子:
int[] b = new int[3]; //定義一個int類型的數組,長度爲3,裏面的元素默認值爲0
此時內存中是這樣的:
數組中得到數據也是如此,如何知道b數組每一個元素的數據呢?首先咱們知道經過b這個數組在內存中的哪一個位置,由於數組在內存中是一個相連的內存空間,因此b[0]的位置就等於b+0,而b[1]的位置就爲b+1,b[2]=b+2,......以此類推,知道了數組全部元素的位置。而數組中第一個元素正好是在數組中開頭的位置,用b[0]表示,則恰好是b表示的位置,而用1表示第一個元素的位置,則須要表示爲a+1-1。
在前面的內容中,咱們已經定義了數組,初始化了數組,賦了值,那麼如何使用數據呢,其實前面已經分析過,咱們經過數組下標來爲數組賦值,也經過數組下標獲得每一個數組元素的值。
int[] a = new int[3]; a[0] = 3; a[1] = 4; a[2] = 5; System.out.println(a[1]); //獲得數組的第二個位置的值,將它輸出 //咱們也能夠經過循環遍歷數組中每一個元素 for(int i = 0; i < a.length; i++){ System.out.println(a[i]); //循環打印出數組中每一個元素 }
在上面的例子中,循環打印的時候,咱們看到,使用了a.length,經過 數組變量名.length 能夠獲得數組的長度,因此上面咱們經過a.length獲得數組的長度爲3,循環3次,打印出數組的元素。
上面咱們知道,咱們控制數組是經過 變量名[下標] 來爲變量賦值或者獲得值,而若是訪問超過了數組長度的下標時,則會出現異常。
int[] a = new int[2]; a[5] = 2; //a數組長度只有2個長度,而咱們經過下標5訪問第6個元素,實際a數組不存在這個位置,則會出現異常。
上面咱們講的都是在數組中存儲一種基本數據類型或引用數據類型,而咱們也能夠在數組中存儲數組:
上面咱們在一個數組元素中存儲了另一個數組元素,裏面那個數組存儲了一種數據類型int的值,咱們稱這樣的數組爲二維數組。
數據類型[ ] [ ] 數組名 = new 數據類型[長度1][長度2] ;
長度1爲外面一層數組的長度,長度2位裏面一層的長度。
定義和初始化上圖中的形式,咱們能夠這樣:
int[][] a = new int[3][3]; a[0][0] = 2; //訪問時前面一個方括號的數字表示外面一層數組的元素下標,第二個方括號的數字表示裏面一層的數組的下標 a[0][1] = 3; a[0][2] = 4; a[1][0] = 5; a[1][1] = 3; a[1][2] = 9; a[2][0] = 90; a[2][1] = 70; a[2][2] = 85;
咱們也能夠將二維數組定義成這樣一種格式:
int[][] a = new int[3][]; //在定義初始化時設置外面一層長度爲3,不設置裏面一層的長度, a[0] = new int[2]; //初始化裏面每一層,設置長度 a[1] = new int[1]; a[2] = new int[3]; a[0][0] = 3; //爲每個元素賦值 a[0][1] = 4; a[1][0] = 9; a[2][0] = 90; a[2][1] = 70; a[2][2] = 85;
而三維數組就是數組裏面的數組裏面存放的是數組~~~~~以此類推能夠有n多維數組,不過通常人使用的很少 ~~~^_^~~~