在AP CS A Exam中,只考察兩種數組(arrays)類型:
一維數組(1-dimensional arrays)和二維數組(2-dimensional arrays),下面我們分別來仔細看一下具體考察的內容。
1. 1-dimensional arrays
所謂數組(arrays)就是用來存儲一個元素個數固定且元素類型相同的有序集合。
一維數組里面的元素(elements)可以是原始類型(primitive types),也可以是對象(objects),比如: int[] 和 double[] 就屬于原始類型數組(arrays of primitive types);String[] 就屬于對象數組(arrays of objects)。
在同一個數組中,所有元素都必須是同一種類型,比如都是int型,或者都是double型。
我們可以使用關鍵詞new來給數組進行初始化,比如:
int[] arr = new int[10];
上述代碼聲明了一個int型數組變量arr,并進行了初始化。
這里的數字10就是這個數組中的元素的個數,或者稱作這個數組的長度(使用arr.length獲取數組arr的長度)。
需要特別注意的是,數組的長度一旦確定,就不能夠再變化,這是和動態數組(ArrayList)的區別之一。
另外,當我們使用上述代碼進行數組的初始化之后,數組里面的元素是有初始值的,初始值是0;如果是double型的一維數組,元素的初始值就是0.0;如果是String型的一維數組,元素的初始值就是null。
當然,如果你想要改變數組中元素的初始值,也可以再給元素進行賦值操作。
我們還可以使用另外一種簡捷的方法對數組進行初始化,比如:
int[] arr = {1, 2, 3};
這樣我們就同時完成了初始化和給數組元素進行賦值的操作。
如果我們需要對數組中的某個元素進行訪問,我們就需要用到數組的索引(index),所謂索引,就是每個元素的序號。
每個數組的index都是從0開始的;如果一個數組的長度是n,那么它的 index 就是從0到n-1。
如果程序使用了一個非法的index來訪問一個數組的元素,程序運行時就會出現異常(ArrayIndexOutOfBoundsException)。
最后,考生還需要掌握如何使循環(loops)去遍歷(traverse)數組中的每一個元素。
2. 2-dimensional arrays
二維數組(2-dimensional arrays)里的元素是一維數組,這些一維數組的長度都相等,而且都是同一種數據類型。
所以,我們可以將二維數組看做是一個長方形矩陣,比如:
int[][] arr = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12}};
這里的二維數組中有4個元素,這4個元素都是int型的一維數組,每個一維數組都由3個int型數據元素組成。
于是,我們就可以使用如下矩陣表示這個二維數組:
觀察上表我們可以看到,這是一個4*3的矩陣,4代表的是行數(the number of rows),3代表的是列數(the number of columns)。
所以一個二維數組的長度(arr.length)既可以看做是這個二維數組中所包含的一維數組的個數,也可以看做是這個二維數組矩陣的行數。
而列數實際上就是每個一維數組的長度,所以我們可以通過訪問第一個元素,來獲得這個二維數組的列數,在這里就是arr[0].length。
對于上面的二維數組來說,如果我們想要訪問矩陣中的某一個元素,我們需要知道這個元素所在的行索引和列索引,比如arr[1][2]訪問的就是行索引為1、列索引為2的那個元素,在這里就是整數6。
當然我們也可以只是用行索引來訪問一個二維數組的某個一維數組,比如,在這里arr[2]指向的就是{7, 8, 9}這個一維數組。
注意,數組變量是參數類型(reference type)。
在考試中,考生需要能夠從二維數組中通過行索引獲取其中某個一維數組,并將這個一維數組賦值給另外一個一維數組變量,比如我們可以將上面的二維數組中的第二個元素賦值給一個新的一維數組:
int[] arrNew = arr[1];
上述代碼就會將{4, 5, 6}這個一維數組賦值給arrNew這個新的一維數組。
當然,考生還要能夠將二維數組中的某一行(一維數組)作為參數進行傳遞,以及能夠通過循環去遍歷(traverse)每一行的每一個元素。
最后給大家留一個小問題:
String[] arr = new String[3];
請問上面這個數組中的3個元素的值分別是什么?

? 2025. All Rights Reserved. 滬ICP備2023009024號-1