(二)Java數組特性總結,你真的了解數組嗎?


一、數組的特殊性

(一)數組標識符是一個引用,指向堆中創建的一個真實對象,這個對象(數組)保存了指向保存其他對象的引用。

(二)數組中保存引用類型時保存的是對象引用,基本數據類型數組保存基本數據的值。

(三)數組的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編程中,應該優先選用容器而不是數組,只有已證明性能成為問題(數組比容器對性能提高更多)時,才應該將程序重構為使用數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM