Java基礎:數組,java基礎數組
轉載請註明出處:jiq•欽's technical Blog
一、數組初始化
無論如何,當你要執行個體化一個數組對象的時候,必須要指定其大小。
不能在提供了initializer的情況下再去指定數組的維度!!!
正確的初始化方式有:
方式1:Int[][] array =new int[][]{{1,2},{3,4},{5},{2,4,2,1}};
方式2:Int[][] array ={{1,2},{3,4},{5},{2,4,2,1}};
方式3:Int[][] array =new int[3][5];For(int I =0;i<array.length;i++){For(int j=0;j<array[i].length;j++){Array[i][i] = i*j;}}
二、數組相對容器的優勢
數組原來有三個優勢:效率(付出的代價是大小固定),型別安全,以及儲存基本類型的能力。
在泛型之前,容器在處理對象的時候,都將他們視為沒有任何具體類型,然而數組指定持有某一具體類型,可以進行編譯時間檢查,但是自從1.5引入泛型時候,這個優勢消失了。自從引入封裝機制之後,容器也可以方便地應用與基本類型了。
所以,數組碩果僅存的優勢就是“效率”了。
選擇的原則是:當你使用最近的Java版本進行編程時,應該優先選擇容器而不是數組,只有在證明效能已成為問題(切換到數組有助於提高效能)時,你才應該將程式重構為數組。
三、數組在Java中是一個類
無論使用哪種類型的數組,數組標識只是一個引用,指向堆中一個真實的對象。
(1)如果是對象數組,那麼數組引用中儲存的是一系列對象的引用。
(2)如果是基本類型數組,那麼數組引用中儲存的是一系列基本類型的值。
數組對象只有一個唯讀成員length,'[]'文法是訪問數組對象的唯一方式。
四、java中如果你要返回一組值,那麼就使用數組
C/C++就不行,只能返回指標,雖然這時控制數組的生命週期就會變得困難,但是Java無需要為數組負責,只要你需要他,它就會一直存在,當你使用完後,記憶體回收行程會清理掉它。
publicString[] getFruits(){ ……… }
五、粗糙數組
Java支援粗糙數組,即構成矩陣的每個向量具備任意長度
Inta[][] = {{1,2}, {2, 4, 5}, {6, 4, 8, 9}};
六、數組+泛型
你無法執行個體化具有參數化型別的數組,因為數組必須知道它所持有的確切類型。但是你可以參數化數組本身的類型。
Type<Orange>[] pp = new Type<Orange>[10]; |
//compile error |
Public static <T> T[] f(T[] args){ …… } |
//OK |
七、Arrays類
Array.sfill(a, 11); Arrays.fill(b, 2, 7, "Hello"); |
用單一的值填充一個數組,如果是對象,則複製引用。 |
|
Arrays.equals(); |
比較兩個數組是否相等。deepEquals()用於多維陣列。此方法對於所有基本類型和Object都做了重載,用於比較兩個數組。相等的條件是元素個數相等,並且對應位置的元素也相等。 |
|
class Type implements Comparable<> Type[] a = new Type[10]; Arrays.sort(a); Class MyComparator implements Comparator{}Arrays.sort(a, new MyComparator()); |
對數組排序。可以對任意基本類型數組排序,也可以對對象數組排序,只要改對象實現了Comparable介面(包含compareTo方法)或者具有關聯的Comparator。 |
|
Arrays.binarySearch(); |
在已排序的數組中尋找元素。 |
|
Arrays.hashCode(); |
產生數組的散列碼。 |
|
Arrays.asList(); |
接收任意序列或者數組作為參數,轉換成List。 |
|
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。