黑馬程式設計師____陣列的特性
----------------------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]的值為3,fib[7]的值為13。
第八行定義陣列a[ ][ ]為有5個成份的陣列,而每個成份本身又是陣列,陣列成份為double型別,5個成份陣列中僅有3個被分配,隨後的程式碼行為a[4]分配一個有66個成份的double型別陣列,並對最後一個成份進行賦值,其值為3.14。
最後一行定義了一個具有6個成份元素,其型別為Object的陣列,每個成份又是陣列,前4個成份陣列中的成份型別均為基元(非陣列),而b和a中的元素就不是基元,因為它們是陣列型別。Objects中的基元包括2,5,13(成份fib中的成份),空null(成份a中的成份),2.2以及3.14(成份a的成份的成份)。
例1中的 a[ ][ ]稱為粗糙陣列(ragged array),因為它是一個具有不同長度的成份的二維陣列。
在Java中,陣列的成份型別可以是基本資料型別,引用型別或陣列型別,當然,最簡單的還是成分為基本資料型別的陣列,如例1中的X[ ],isPrime[ ]及fib[ ]等,這些陣列均可以進行排序。
---------------------- android培訓、java培訓、期待與您交流! ----------------------