5.1.3 一維數(shù)組的使用
定義好一維數(shù)組后,我們來看如何使用一維數(shù)組,使用一維數(shù)組,實(shí)際上就是使用數(shù)組中所包含的元素,一維數(shù)組元素的使用格式如下:
數(shù)組名[數(shù)組下標(biāo)],下標(biāo)的范圍最小值為0,值為數(shù)組長度-1。
例如:
public class HelloWorld {
public static void main(String[] args) {
int[]a={1,2,3,4,5,6,7,8,9};
int sum=0;
for(int i=0;i<9;i++){
sum+=a[i];
}
System.out.println("sum="+sum);
}
}
該程序的功能是對數(shù)組中所有元素求和并輸出,從程序中可以看出數(shù)組a含有9個元素,因此,其下表范圍為0-8,在for循環(huán)中有“i<9”。
數(shù)組元素的訪問一般離不開for循環(huán),離開for循環(huán)的數(shù)組在使用時也就失去了數(shù)組的優(yōu)勢,上述程序如果不使用for循環(huán),對于數(shù)組所有元素的求和,則只能用 a[0]+a[1]+…+a[8]的方式,與我們定義9個獨(dú)立的變量進(jìn)行相加是一樣的。
我們說數(shù)組的下標(biāo)是有范圍的,對于C或者C++語言來說,數(shù)組的定義也與此類似,但在使用時,如果數(shù)組的下標(biāo)超出范圍后,在C或者C++中,程序不出錯,且數(shù)組元素的值是我們不可預(yù)知的一個值,那么java中是否也是如此呢,改變上面程序中的語句 for(int i=0;i<9;i++){
為 for(int i=0;i<10;i++){
編譯程序,程序出錯,出錯信息如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at HelloWorld.main(HelloWorld.java:6)
這里出錯的信息是數(shù)組下標(biāo)越界異常,也就是說,我們的程序中有超出數(shù)組下標(biāo)的數(shù)組元素訪問,這里是a[9],數(shù)組中只有9個元素,到a[8],因此程序報錯。由于java和C++的不同,我們在訪問數(shù)組元素的時候就需要特別小心,在訪問數(shù)組元素時,應(yīng)確保數(shù)組下標(biāo)不越界。上述程序是通過人為的方式檢查數(shù)組元素個數(shù),然后根據(jù)數(shù)組元素個數(shù)設(shè)置for循環(huán)的循環(huán)條件,有沒有更好的方式來保證數(shù)組下標(biāo)不越界呢?
有的,在java中,為數(shù)組提供了一個數(shù)據(jù)成員length來存儲數(shù)組的長度,我們可以使用length數(shù)據(jù)成員來確保數(shù)組下標(biāo)不越界。修改上述程序如下:
public class HelloWorld {
public static void main(String[] args) {
int[]a={1,2,3,4,5,6,7,8,9};
int sum=0;
for(int i=0;i sum+=a[i];
}
System.out.println("sum="+sum);
}
}
這里,用a.length替換了原來的9,這樣,在訪問數(shù)組元素的時候就不會發(fā)生數(shù)組下標(biāo)越界異常了,建議讀者在今后的數(shù)組元素訪問時盡量采用a.length的形式。