心得筆記- java 陣列的建立(固定,變動)
Java陣列的特性
Java的陣列並不以一塊連續的記憶體空間來表達,而是把陣列視為特殊的物件。此物件不但可存放資料,還利用該物件的length屬性記錄著該陣列的長度。
一維陣列的建立
int[] x;
x = new int[10]; // 必須利用new指令產生並定義該物件的空間
for (int i = 0; i < x.length; i++) { // 此物件有一個length屬性,用以紀錄該陣列的長度
x[i] = 10; //給定陣列的初值
}
多維陣列建立(二維陣列以上)
Java陣列物件是只能儲存基本資料型態或reference的一維陣列,二維以上的陣列是透過reference指到其他的一維陣列物件來達成。
二維陣列的建立 (第二維陣列的長度一致)
int[][] x;
x = new int[10][20]; //因陣列固定, 可以一次建立陣列物件
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[i].length; j++) {
x[i][j] = 10; //定義初值
}
二維陣列的建立 (第二維陣列的長度不一致)
由於java以一維陣列來模擬二維陣列,因此透過第一個陣列的reference所找到的陣列,其長度不必然相同
int[][] x;
x = new int[10][]; // 因二維陣列不固定, 因此先產生10個第一維陣列
for (int i = 0; i < x.length; i++) {
x[i] = new int[i];
// 再分別產生i個第二維陣列, 因第一維陣列存放reference,可透過它指向另一個陣列,i值可以使用變數, 造成不固定長度。
}
不可使用未定義空間的陣列
Java在執行期間會對陣列的索引做檢查,如果超出來合法範圍,就會產生ArrayIndexOutOfBoundException的錯誤。
例如:
int[] x = new int[10]; //合法定義的空間為x[0] .. x[9]
x[10]=10; //超過範圍
就會產生ArrayIndexOutOfBoundException的錯誤訊息,並且終止該程式
java.lang.ArrayIndexOutOfBoundsException: 10
at ArrayExample4.main(ArrayExample4.java:5)
Exception in thread "main"
上面訊息的意義是:
java.lang.ArrayIndexOutOfBoundsException: 10告訴我們索引值是10的時候引起了此問題
at ArrayExample4.main(ArrayExample4.java:5)告訴我們呼叫ArrayExample4.main時在ArrayExample4.java的第五行產生錯誤
參考:
http://programming.im.ncnu.edu.tw/J_Chapter3.htm