Java編程那些事兒44—數組基礎文法鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
6.2 數組基本文法 瞭解了數組的概念以後,下面來看一下數組的文法格式。數組的文法格式主要有四種:數組聲明、數組初始化、引用數組元素和獲得數組長度。
6.2.1 數組聲明 和變數類似,數組在使用以前也必須聲明,數組的聲明文法格式為: 資料類型 數組名稱[] 或: 資料類型[] 數組名稱 例如: int m[]; char c[]; double d[]; 這裡的資料類型可以是Java語言的任意資料類型,也就是說既可以是基礎資料型別 (Elementary Data Type)也可以是複合資料型別。在聲明數組時使用一對中括弧,該對中括弧既可以放在資料類型的後面,也可以放在數組名稱的後面。數組名稱是一個標識符,可以根據需要設定其名稱,在程式中使用該名稱代表該數組。 這兩種聲明的文法格式在實際使用時完全等價,可以根據習慣進行使用。 數組聲明以後在記憶體中不佔用空間,沒有地址,由於數組是複合資料型別,所以聲明完成以後其預設值是null。 數組聲明以後不能直接使用,必須對其初始化以後才可以進行使用。
6.2.2 數組初始化 數組初始化就是對數組進行賦值。數組的初始化文法分為兩種:靜態初始化和動態初始化。靜態初始化適用於已知數組所有元素的值,一次初始化所有元素,動態初始化只申請空間,每個元素的值是數組聲明時資料類型對應的初始值。
6.2.2.1 靜態初始化 靜態初始化,也稱數組的整體賦值,是一次為數組中所有元素依次進行賦值的文法,通過可以文法可以指定數組中每個元素的值,同時也指定了數組的長度。 文法格式為: 資料類型[] 數組名稱 = {值1,值2,……,值n}; 例如: int[] m = {1,2,3,4}; char c[] = {‘a’,’f’,’d’}; 靜態初始化必須和數組的聲明位於同一行,換句話說,只能在聲明數組的同時進行靜態初始化。數組中的所有元素書寫一對大括弧的內部,系統按照值的書寫順序依次為數組運算進行賦值,例如數組m,則將1賦值給m數組的第一個元素,2賦值給m數組的第二個元素,依次類推,數組的總長度等於靜態初始化時數值的個數。在實際書寫時,需要注意,值的類型必須和數組聲明時的類型匹配,或者可以自動進行轉換。 在實際程式中,靜態初始化一般書寫一組已知的無規律數值,這樣書寫起來比較簡單,格式比較統一。
6.2.2.2 動態初始化 動態初始化,也就是只為數組指定長度,並且在記憶體中申請空間。動態初始化可以不必和數組的聲明放在一起,也可以重新初始化一個初始化的數組。 動態初始化的文法格式: 資料類型[] 數組名稱 = new 資料類型[長度]; 例如: int[] m = new int[10]; char[] c; n = new char[3]; 動態初始化使用new關鍵字進行初始化,new關鍵字後續的資料類型要求和數組聲明時的資料類型一樣,中括弧內部是需要初始化的數組長度,該長度值可以是數字也可以是整型變數,如果是整型變數則不能為long型。在實際使用時,也可以先聲明再進行動態初始化。 動態初始化指定了數組的長度,在記憶體中申請了對應長度的空間,而每個元素的值取數組資料類型對應的預設值。預設值的規定如下:a、 boolean類型的預設值是false。b、 其它7種基礎資料型別 (Elementary Data Type)是0。說明:char的預設值是編碼為0的字元,而不是字元0。c、 複合資料型別的初始值是null。動態初始化只專註於為數組申請對應長度的空間,具體儲存的元素的值可以根據需要依次進行指定。
6.2.3 引用數組元素 數組是一組數的集合,在實際使用時還需要引用數組中的每個元素。則引用數組中元素的文法格式為: 數組名稱[下標] 其中下標指數組中每個元素的索引值,Java文法規定數組中的第一個元素索引值是0,第二個是1,依次類推。在程式書寫時,下標位置既可以書寫常數也可以書寫變數。而整個引用元素的運算式可以看作是一個變數,該變數的類型和數組的類型一致。 範例程式碼如下: int[] m = {3,2,4,6}; m[1] = 4; m[2] = m[3] + m[0]; 在代碼中,可以使用變數作為下標,範例程式碼如下: char[] ch = new char[10]; int i = 2; ch[i] = ‘a’; 使用變數作為數組的下標,極大的增強了數組元素使用的靈活性,也是靈活使用數組必須深刻理解的內容。 因為數組的下標都從0開始,所以有效數組下標區間是0到數組的長度減1,其它的下標都是非法的。在代碼中出現非法的下標不會出現語法錯誤,但是會導致運行時出現異常。
6.2.4 獲得數組長度 為了方便的運算元組,Java文法中提供了獲得數組長度的文法格式。對於一個已經初始化完成的數組,獲得該數組長度的文法格式為: 數組名稱.length 範例程式碼如下: int[] n = {1,2,3,4,6}; int len = n.length; 則在該代碼中n.length代表數組n的長度,由數組的初始化可以看出數組n的長度是5,則變數len的值將是5。使用該文法,可以只需要知道數組的名稱就可以獲得數組的長度,便於靈活運算元組。 綜合前面下標的文法和長度的文法,則輸出數組n中所有元素的代碼為: for(int i = 0;i < len;i++){ System.out.println(n[i]); } 這種使用數組的方式稱作數組的遍曆,遍曆數組是使用數組的基礎,也是很多和數組相關邏輯實現的基礎。 關於數組的文法就介紹這麼,下面通過一些樣本來示範數組的實際使用。