一、簡介
描述:
- 陣列是相同型別資料的有序集合,
- 其中,每一個資料稱作一個陣列元素,每個陣列元素可以通過一個下標來訪問它們,
基本特點:
- 陣列的長度是確定的,陣列一旦被創建,它的大小就是不可以改變的,
- 陣列元素必須是相同型別,不允許出現混合型別,
- 陣列中的元素可以是任何資料型別,包括基本型別和參考型別,
- 陣列變數屬參考型別,陣列也可以看成是物件,陣列中的每個元素相當于該物件的成員變數,陣列本身就是物件,Java中物件是在堆中的,因此陣列無論保存基本資料型別還是其他物件型別,陣列物件本身是在堆中的,
二、宣告陣列
語法:
/* 第一種,中括號在資料型別后 */
elementType[] arrayVarName
/* 第二種,中括號在變數名后 */
elementType arrayVarName[]
描述:
- 首先必須宣告陣列型別的變數,才能自如地在程式中使用陣列物件,
- Java中宣告陣列變數的方式有兩種,一種中括號在'資料型別'后,另一種中括號在'變數名'后,
注意:
- 宣告陣列變數時,開頭的'資料型別'(不帶中括號)代表陣列中元素的資料型別,
- 宣告陣列變數的第二種中括號在'變數名'后的方式,來自C/C++語言的風格,是為了方便C/C++程式員在學習Java時能更快上手,不建議使用,
- 宣告陣列的時候并有陣列被真正的創建,沒有實體化任何物件,
- 宣告陣列時不能指定其長度(陣列中元素的個數),只有在創建陣列物件時,JVM才分配空間,這時才與長度有關,
示例:
/* 推薦使用 */
int[] intArr1;
/* 不建議使用 */
int intArr2[];
三、創建陣列
語法:
-
動態初始化:
new elementType[arrayLength] -
靜態初始化:
{firstElementValue, secondElementValue, thirdElementValue...}
描述:
- 創建陣列有兩種方式:動態初始化和靜態初始化,
- 創建一個陣列時,必須指定陣列的長度,動態初始化時在中括號中指定,靜態初始化時陣列長度為大括號中元素的個數,
- 使用動態初始化創建陣列物件時,會先指定陣列的長度,并對元素進行默認初始化,
- 使用靜態初始化創建陣列物件時,不僅會指定陣列長度和對元素進行默認初始化,還會對所有元素賦值,
注意:
-
陣列是參考型別,它的元素相當于類的實體變數,因此陣列一經分配空間,其中的每個元素也被按照實
例變數同樣的方式被隱式初始化,
示例:
/* 動態初始化 */
new int[5];
/* 靜態初始化 */
{1, 2, 3, 4, 5};
四、使用陣列
Ⅰ、宣告并創建
語法:
/* 宣告陣列變數并動態初始化 */
elementType[] arrayVarName = new elementType[arrayLength];
/* 宣告陣列變數并靜態初始化 */
elementType[] arrayVarName = {firstElementValue, secondElementValue, thirdElementValue...};
描述:
- 陣列變數的宣告和創建陣列可以用一條陳述句完成,通常我們也會這樣來多次操作一個陣列物件,
示例:
/* 宣告陣列變數并動態初始化 */
int[] intArr1 = new int[5];
/* 宣告陣列變數并靜態初始化 */
int[] intArr2 = {1, 2, 3, 4, 5};
Ⅱ、陣列長度
語法:
arrayObject.length
描述:
- 陣列長度可以通過陣列物件直接獲得,語法如上所示,
- 陣列長度在陣列物件創建時指定,陣列物件創建后,該陣列物件的長度不會改變,
示例:
int[] intArr = {1, 2, 3, 4, 5};
System.out.println(intArr.length);//5
Ⅲ、陣列下標
語法:
arrayObject[elementIndex]
描述:
- 陣列的元素是通過下標(索引)訪問的,
- 陣列下標從'0'開始,總下標個數為陣列長度,所以下標值依次為從零到陣列長度減壹:0 ~ arrayObject.length-1
注意:
- 陣列物件的下標在使用時,如果下標數值越界,例如小于零,或者超過陣列長度減壹,就會報錯:ArrayIndexOutOfBoundsException(陣列下標越界例外),
示例:
int[] intArr = {1, 2, 3, 4, 5};
System.out.println(intArr[1]);//2
Ⅳ、回圈結構遍歷陣列
語法:
-
'for'回圈
for (int i = 0; i < arrayObject.length; i++) { /* 使用'arrayObject[i]'遍歷操作陣列元素 */ } -
'foreach'回圈
for (elementType elementVarName : arrayObject) { /* 使用'elementVarName'遍歷操作陣列元素 */ }
描述:
-
陣列的元素型別和陣列的大小都是確定的,所以當處理陣列元素時候,我們通常使用'for'回圈或者'foreach'回圈(增強型'for'回圈),
-
'foreach'回圈能在不使用下標的情況下遍歷陣列,
示例:
/* 運行結果為在控制臺依次輸出:1 2 3 4 5 1 2 3 4 5 */
public static void main(String[] args) {
int[] intArr = {1, 2, 3, 4, 5};
/* for回圈遍歷陣列 */
for (int i = 0; i < intArr.length; i++) {
System.out.println(intArr[i]);
}
/* foreach回圈遍歷陣列 */
for (int element : intArr) {
System.out.println(element);
}
}
五、二維陣列
語法:
-
宣告
innerElementType[][] arrayVarName -
創建
/* 動態初始化二維陣列 */ new elementType[outerArrayLength][innerArrayLength] /* 靜態初始化二維陣列 */ {{innerFirstElementValue, innerSecondElementValue, innerThirdElementValue...},{innerFirstElementValue, innerSecondElementValue, innerThirdElementValue...},{innerFirstElementValue, innerSecondElementValue, innerThirdElementValue...}...} -
陣列長度
/* 獲取外層陣列長度 */ arrayObject.length /* 獲取指定外層陣列下標的內層陣列長度 */ arrayObject[outerIndex].length -
陣列下標
/* 獲取指定外層陣列下標的元素(一個內層陣列) */ arrayObject[outerIndex] /* 獲取指定外層陣列下標的內層陣列的指定內層陣列下標的元素 */ arrayObject[outerIndex][innerIndex]
描述:
- 二維以上多維陣列的語法根據二維陣列的語法類推,
- 多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一維陣列,其每一個元素都是一個一維陣列,
示例:
/* 運行結果為在控制臺依次輸出:1 2 2 3 3 4 4 5 5 6 */
public static void main(String[] args) {
int[][] arrayObject = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}};
/* 嵌套foreach回圈遍歷二維陣列 */
for (int[] innerArr : arrayObject) {
for (int innerElement : innerArr) {
System.out.println(innerElement);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/209258.html
標籤:其他
