1.數組簡介
我們可以想一個問題,如果現在讓你存儲100個學生的數學成績,你該怎么存儲呢?難道要定義100個變量,每個變量代表一個學生的成績嗎?如果是存儲1000個、10000個、乃至更多學生的成績怎么辦?如果是定義一個個變量進行存儲,就太麻煩了,而且這也不符合項目開發時對復用性、可讀性等方面的要求。所以我們肯定不能這么編程。那么現在解決的辦法,就是可以使用”數組“來進行實現。
2.概念
所謂的數組(Array),就是數據的組合,簡單地說就是一個存儲容器,里面可以包含多個數據。該容器在內存中開辟了一塊連續的存儲空間,可以用來保存相同類型的多個數據。給大家舉個栗子,下圖的這個東西你見過嗎?

有的人說這不是雞蛋嗎?其實壹哥想讓你看的是存儲這些雞蛋的”容器“--雞蛋托!一個雞蛋托有多個存儲格子,每個格子只能存儲一個雞蛋,并且這些格子只能用來存儲雞蛋,不能存儲其他的東西。一個雞蛋托可以存儲的雞蛋數量是有限的,不能無限存儲。
其實Java里的數組就類似于是”雞蛋托“,數組中存儲的數據元素就是一個個的”雞蛋“。一個數組占據了內存中的一片連續空間,只能存儲相同類型的數據,數組有一定的存儲空間。我們在創建數組時,需要先聲明數組的類型,之后該數組中只能存儲指定類型的數據。
●我們把存儲在數組中的每一個數據,稱為”數據元素“。這些數據元素會按著一定的順序排列存儲,并賦予每個數據元素對應的編號。我們可以直接通過編號(索引、下標)的方式來調用指定位置上的數據元素,查找速度會很快。
●數組本身是引用類型,但數組中的數據元素可以是任何數據類型,包括基本數據類型和引用數據類型。
●數組創建時需要指定一個名稱,并會在內存中開辟一整塊連續的內存空間,數組名引用的就是這塊連續空間的首地址(第一個地址)。
●數組創建后,長度一旦確定,就不能再被修改。

3.特點
●數組中保存的數據,其數據類型必須是相同;
●數組的長度是固定的,一旦定義,其長度就不能被改變。
4.分類
Java里的數組,按照不同的標準可以有多種劃分方式。
●按照維度:一維數組、二維數組、多維數組;
●按照數據類型:基本類型元素的數組、引用類型元素的數組(即對象數組)。
5.默認值
數組本身是引用類型,它的元素相當于是類的成員變量,因此數組一經分配內存空間,其中的每個元素也會按照成員變量的方式被進行隱式初始化。這些不同類型的數據元素有著自己對應的默認值:
●整型數組默認值:0;
●浮點型數組默認值:0.0;
●布爾類型數組默認值:false;
●字符型數組默認值:0 或者' '或者 '\u0000';
●引用類型數組默認值:null。
其中null是一種特殊的值,表示當前對象在內存中沒有指向任何的地址。而""表示一個空字符串,在內存中是有對應的內存地址的。
6.數組長度
每個數組都有一個length屬性,代表它的長度(元素個數)。例如arr.length指明數組arr的長度。數組一旦初始化,其長度就是不可變的。
7.數組元素的引用
我們在定義并用new運算符創建數組之后,才可以引用數組中的每個元素。引用數據元素的方式是:
數組名[數組元素下標]
其中數組元素的下標也叫做索引。數組元素的下標可以是整型常量或整型表達式,如a[3]、b[i]、c[6*i]。另外數組元素的下標從0開始,所以一個長度為n的數組,其合法的下標取值范圍是 0 —>n-1。如int a[]=new int[3]; 可引用的數組元素是a[0]、a[1]、a[2]。