1. 程式人生 > >黑馬程式設計師____陣列的特性

黑馬程式設計師____陣列的特性

----------------------android培訓java培訓、期待與您交流! ----------------------

一個數組是一個物件,它由同類型的一組成分元素所組成,每個元素均有一個唯一編號。元素的編號從0開始,因而對每個元素的引用可以由編號和下標運算子[ ]來進行,由於陣列的高效性,它得到了非常廣泛的使用。

Java中陣列具有以下主要特性:

1. 陣列是物件。

2. 陣列是在運動時動態生成的。

3. 可以把陣列賦給型別為Object的變數

4. 在陣列上可以呼叫適用於Object的任何方法。

5. 一個數組物件包含一組具有相同資料型別的變數。

6. 陣列中的變來能夠也稱為陣列的成份(components)。

7. 如果陣列的成份型別是T,則陣列的型別為T[]。

8. 一個數組型別變數將擁有指向一個數組物件的引用。

9. 陣列的成份型別本身可以使陣列型別。

10.陣列中部為陣列型別的成份稱為單元(element).

11.基元的型別可以是基本型別或引用型別。

12.陣列的長度是陣列成份的個數。

13.陣列的長度在陣列生成時設定,並不能隨後改變。

14.陣列的長度可以public final型例項變數的形式存取。

15.陣列成份元素用0到length-1間的整形值來索引。

16.當違背特性1.5時,將產生ArrayIndexOutofBoundsException異常。

17.型別為short、byte和char的變數可用作陣列索引。

18.陣列可以呼叫Object.clone()方法進行復制。

19.陣列可以呼叫Arrays.equals()進行相等性測試。

20.每個陣列對性愛能夠均實現了Cloneable和java.io.Serializable介面。

可以看到,特性3可從特性1得到。儘管陣列型別不是class型別,但它們以Object類的擴充套件形式的面貌出現。特性7表明陣列型別與class型別是不一致的地,事實上,陣列型別是一種匯出(derived types)型別,對每種型別T,存在一個相應的陣列型別T[ ]。同樣,對8鍾基本型別的每一種,都存在相應的陣列型別。

特性9允許陣列的陣列存在。從技術角度上講是一回事。這是因為陣列本身就是物件,陣列的陣列就成為物件陣列,但從物件的角度上說,陣列的陣列與陣列是一回事。這是因為陣列本身就是物件,陣列的陣列就成物件陣列,這其中的某個成份也可以不是陣列,只要是物件就行(例1 將對此進行說明)。

應當注意到,特性13所導致的結果是:當把一個引用成份的值變為null時,對陣列長度將不產生任何影響,null仍是引用成份的一個有效值。

例1 陣列定義

下面是一些正確的陣列定義例子:

public class Ex0201
{
	public static void main(String [] args)
	{
		float x[];
		x = new float[100];
		args = new String[10];
		boolean[] isPrime = new boolean[1000];
		int fib[] = {0,1,1,2,3,5,8,13};
		short[][][] b = new short[3][8][5];
		double a[][] ={{1.1,2.2},{3.3,4.4},null,{5.5,6.6},null}
		a[4] = new double[66];
		a[4][65] = 3.14;
		Object[] objects = {x,args,isPrime,fib,b,a};
	}
}

程式的第一行宣告X[ ]為一浮點陣列,但並沒有分配任何儲存空間。第二行對x[ ]進行定義,並使之具有100個數組成份。

第三行宣告args[ ]String物件陣列。但請注意宣告陣列的兩種等效方法,方括號字尾可放在型別識別符號或陣列變數上,第四行使得args[ ]具有10個型別為String的成份。

第五行定義了具有1000個布林型變數的陣列isPrime[ ]

第六行定義了8個整數的陣列fib[ ],並對其進行初始化,例如fib[4]的值為3fib[7]的值為13

第八行定義陣列a[ ][ ]為有5個成份的陣列,而每個成份本身又是陣列,陣列成份為double型別,5個成份陣列中僅有3個被分配,隨後的程式碼行為a[4]分配一個有66個成份的double型別陣列,並對最後一個成份進行賦值,其值為3.14

最後一行定義了一個具有6個成份元素,其型別為Object的陣列,每個成份又是陣列,前4個成份陣列中的成份型別均為基元(非陣列),而ba中的元素就不是基元,因為它們是陣列型別。Objects中的基元包括2513(成份fib中的成份),空null(成份a中的成份),2.2以及3.14(成份a的成份的成份)

1中的 a[ ][ ]稱為粗糙陣列(ragged array),因為它是一個具有不同長度的成份的二維陣列。

Java中,陣列的成份型別可以是基本資料型別,引用型別或陣列型別,當然,最簡單的還是成分為基本資料型別的陣列,如例1中的X[ ]isPrime[ ]fib[ ]等,這些陣列均可以進行排序。

---------------------- android培訓java培訓、期待與您交流! ----------------------