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

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