一、數組的特殊性
(一)數組標識符是一個引用,指向堆中創建的一個真實對象,這個對象(數組)保存了指向保存其他對象的引用。
(二)數組中保存引用類型時保存的是對象引用,基本數據類型數組保存基本數據的值。
(三)數組的length只表示數組能夠容納多少元素,不能保存實際保存的元素個數。
(四)多維數組可以使用Arrays.deepToString()將多維數組轉換成String。
(五)不能使用泛型創建數組,例如:
T []list=new T[size];//會報錯
解決方法:
使用Object轉型:
Object [] objs=new Object[size];
T []Objs=(T[])objs;
二、Arrays實用功能
(一)Array常用函數
1.Array.equals()用於比較兩個數組是否相等(deepEquals用於多維數組)
2.Array..fill()用於填充數組
3.Array.sort()用於對數組排序
4.Array.binarySearch()用於在已經排序的數組中查找元素
5.Array.toString()產生數組的String表示
6.Array.hashCode()產生數組的散列碼
7.Array.asList()接受任意的序列或數組作為參數,將其轉變成List容器
(二)復制數組
System.arraycopy(),使用此函數復制數組將會比for循環快很多。
格式System.arraycopy(src,beginIdex1,des,beginIndex2,length);
src:源數組 beginIndex1源數組開始復制的位置
des目的數組beginIndex2 目的數組開始被賦值的位置
length: 復制的長度
(三)數組的比較
Arrays.equals()方法,可以比較整個數組。數組相等的條件是元素個數相同,並且對應位置的元素也相等(通過調用每個元素的equals()作比較,基本類型調用對應包裝類的equals()方法)
(四)數組元素的比較
Java通過使用策略設計模式來實現了不同元素的比較大小。
策略模式:將“會發生變化的代碼”封裝在單獨的類中(策略對象),在其他類中,通過調用策略對象的方法實現不同的策略對象,結果不同的目的;
Java提供了兩種方式來提供比較功能。
一種是實現java.lang.Comparable接口,讓你的天生具有比較能力。此接口只有一個compareTo()方法,接受一個和本對象比較的另外一個對象,如果比它小就返回負數,相等為0,比它大就是正數。
示例:
測試代碼:
運行結果:
另一種就是我們編寫自己的comparator比較類,繼承Comparator接口,實現compare方法,此方法有兩個參數,即我們比較的兩個對象。
示例:
測試代碼:
運行結果:
總結:
自動包裝機制和泛型的加入使得容器比數組更加靈活且富有優勢。在java編程中,應該優先選用容器而不是數組,只有已證明性能成為問題(數組比容器對性能提高更多)時,才應該將程序重構為使用數組。