Java 陣列 與 迴圈遍歷
阿新 • • 發佈:2019-02-18
Java 陣列
- 陣列由多個元素組成,每個元素都具有相同資料型別
- 陣列命名時名稱與[ ]可以隨意排列,但宣告的二維陣列中第一個中括號中必須要有值,它代表的是在該二維陣列中有多少個一維陣列
- Java中,陣列是一種物件,不是基本資料型別(原生類),大小不可變,且連續儲存。因為是物件,所以在堆中。陣列名(引用) 儲存在棧記憶體中,指向堆記憶體中的內容
- 陣列的父類是Object
- 宣告的時候不能初始化容量,只有new的時候才可以
- java也可能出現數組溢位,溢位時會丟擲異常:
ArrayIndexOutOfBoundsException
Java一維陣列兩種宣告方式:
1. int [] nums;
2.
int nums [];
Java一維陣列兩種初始化方法:
- 靜態初始化
int array[] = new int[]{1,2,3,4,5}
或者
int array[] = {1,2,3,4,5}
需要注意的是,寫成如下形式也是錯誤的
int array[] = new int[5]{1,2,3,4,5}
錯誤原因:
Cannot define dimension expressions when an array initializer is provided
- 動態初始化
int array[] = new int[5];
array[0] = 1;
array[1 ] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
靜態與動態初始化的區別就在於,前者是宣告的時候就初始化;後者是先宣告,再動態初始化。
區域性陣列new之後自動初始化:
public class Hello{
public static void main(String[] args) {
int array[] = new int[3];
for(int x:array){
System.out.println(x);
}
}
}
輸出:
0
0
0
二維陣列宣告方式:
public class Hello{
public static void main(String[]args){
int [][] table = new int[2][2];
int [][] table1 = new int[2][];
int table2 [][] = new int[2][2];
int table3 [][] = new int[2][];
int [] table4 [] = new int[2][2];
int [] table5 [] = new int[2][];
for(int i = 0; i < table1.length; i++){
table1[i] = new int[3];
}
table3[0] = new int[3];
table3[1] = new int[4];
for(int i = 0; i < table5.length; i++){
System.out.println(table5[i]);
}
}
}
輸出:
null
null
一維陣列遍歷
int intArrayOne[]; //定義一個一維陣列
int intArrayTwo[] = {1,2,3,4,5}; //靜態初始化一個數組
intArrayOne = new int[5]; //動態初始化陣列
intArrayOne[3]=10; //給intArrayOne的第4個元素賦值為10
System.out.println(intArrayOne[0]); //引用intArrayOne陣列中的第1個元素並進行輸出,因為此時第1個元素還被賦值,所以其值為整型的預設值0,輸出為0
System.out.println(intArrayOne[3]); //引用intArrayOne陣列中的第4個元素並進行輸出
System.out.println(intArrayTwo[4]); //引用intArrayTwo陣列中的第5個元素並進行輸出
- 靜態初始化在宣告一個數組變數的同時,進行賦值;
- 動態初始化給一個已存在的陣列型別的變數賦一個空的陣列;
- 兩種方法在初始化後,變數所儲存的陣列的元素數目都是確定的,使用下標進行引用時不能超過其範圍
foreach遍歷迴圈
/*
語法:
for(元素型別 臨時變數名:遍歷物件){
引用了臨時變數的語句(臨時變數存入的是遍歷物件中的元素,而非元素對應的下標)
}
*/
//for迴圈輸出一個數組中的所有元素
for(int i=0;i<=intArrayTwo.length-1;i++){
System.out.println(intArrayTwo[i]);
}
//使用foreach迴圈進行簡化
for(int num:intArrayTwo){
System.out.println(num);
}
多維陣列遍歷
/*
以二維陣列為例,二維陣列可以看作是陣列的陣列,它裡面的每一個元素都是一個數組,
且這些陣列的資料型別必須相同,但每個陣列的大小可以不同
*/
//二維陣列的宣告與初始化
int intArrayOne[][] = {{1,2},{2,3},{3,4,5}};//靜態初始化
int intArrayTwo[][];
//一次性為每一維分配空間
intArrayTwo = new int[3][2]; //intArrayTwo陣列共可以含有3個數組元素,其中每個陣列元素都可以且只能含有兩個整數
//從最高維開始,分別為每一維分配空間
intArrayThree = new int[3][];//intArrayThree陣列共含三個陣列元素
intArrayThree[0] = new int[2];//第一個陣列元素,可儲存2個元素
intArrayThree[1] = new int[3];//第二個陣列元素,可儲存3個元素
intArrayThree[2] = new int[5];//第三個陣列元素,可儲存5個元素
//二維陣列元素的引用
int num[][]=new int[2][];
num[0]=new int[2];
num[1]=new int[3];
num[0][0]=1;
num[0][1]=2;
num[1][0]=3;
num[1][1]=4;
num[1][2]=5;
System.out.println(num[0][1]); //輸出num二維陣列的第一個陣列元素的第二個元素
二維遍歷迴圈:
int numArray[][]={{1,2,3},{2,3,4},{4,5}};
//輸出所有元素
for(int[] intArray:numArray){
for(int num:intArray){
System.out.println(num);
}
}