《thinking in java》學習筆記16

數組

數組爲什麼特殊
  • 數組是一種效率最高的存儲和隨機訪問對象引用序列的方式
  • 數組可以持有基本類型,而容器不能。有了自動包裝機制,容器看起來還能持有基本類型,所以數組僅存的優點就是效率

數組是第一級對象
  • 數組標識符其實只是一個引用,只想在堆內存中創建的一個真實對象,這個數組對象用以保存指向其他對象的引用。
  • length是數組對象唯一一個可以訪問的字段,"[]"語法是訪問數組的唯一方式
  • 生成一個數組時,所有引用自動初始化爲null,基本類型的數組則將地址清零(數值0,字符0,布爾false)
  • 基本類型的數組直接存儲基本類型數據的值

返回一個數組
  • 返回一個數組與返回任何其他對象(實質上是引用)沒有區別

多維數組
  • Arrays.deepToString()可以將多維數組轉化爲多個String

數組與泛型
  • 數組與泛型通常不能很好的結合。不能實例化具有參數化類型的數組,但是可以創建這種引用。擦除會移除參數類型信息,而數組必須知道他們所持有的確切類型,以強制保證類型安全。
  • 可以參數化數組本身的類型(T[])
  • 可以創建非泛型的數組,然後將其轉型

創建測試數據
(RTTI)

Arrays實用功能
  • Arrays.fill()用同一個值填充數組;
  • System.arraycopy()針對所有類型做了重載,他需要五個參數:源數組,源數組起始位置,目標數組,目標數組開始位置,複製長度。對象數組僅僅複製了引用。
  • System.arraycopy()不會執行自動包裝和自動拆包。
  • Arrays提供重載的equals方法,僅當元素個數相等,對應位置也相等時相等
  • 元素比較方式有兩種
  1. 實現java.lang.Comparable()接口,只有一個compareTo()方法,如果當前對象小於參數則返回負值,如果相等則返回零,大於參數返回正值
  2. Comparator接口,compare()和equals()兩個方法
  • sort()用於排序
  • 如果數組已經排序好了,可以使用Arrays.binarySearch()執行快速查找。如果未排序就使用會產生不可預料的結果
  • Arrays.binarySearch()的返回值大於等於0則表示找到了,否則返回負值,表示若要保持數組的排序狀態此目標元素應該插入的位置(從1開始計算)。如果數組有重複,不能保證找到的是副本中的哪一個

發佈了74 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章