- 數組是一種效率最高的存儲和隨機訪問對象引用序列的方式
- 數組可以持有基本類型,而容器不能。有了自動包裝機制,容器看起來還能持有基本類型,所以數組僅存的優點就是效率
- 數組標識符其實只是一個引用,只想在堆內存中創建的一個真實對象,這個數組對象用以保存指向其他對象的引用。
- length是數組對象唯一一個可以訪問的字段,"[]"語法是訪問數組的唯一方式
- 生成一個數組時,所有引用自動初始化爲null,基本類型的數組則將地址清零(數值0,字符0,布爾false)
- 基本類型的數組直接存儲基本類型數據的值
- 返回一個數組與返回任何其他對象(實質上是引用)沒有區別
- Arrays.deepToString()可以將多維數組轉化爲多個String
- 數組與泛型通常不能很好的結合。不能實例化具有參數化類型的數組,但是可以創建這種引用。擦除會移除參數類型信息,而數組必須知道他們所持有的確切類型,以強制保證類型安全。
- 可以參數化數組本身的類型(T[])
- 可以創建非泛型的數組,然後將其轉型
- Arrays.fill()用同一個值填充數組;
- System.arraycopy()針對所有類型做了重載,他需要五個參數:源數組,源數組起始位置,目標數組,目標數組開始位置,複製長度。對象數組僅僅複製了引用。
- System.arraycopy()不會執行自動包裝和自動拆包。
- Arrays提供重載的equals方法,僅當元素個數相等,對應位置也相等時相等
- 元素比較方式有兩種
- 實現java.lang.Comparable()接口,只有一個compareTo()方法,如果當前對象小於參數則返回負值,如果相等則返回零,大於參數返回正值
- Comparator接口,compare()和equals()兩個方法
- sort()用於排序
- 如果數組已經排序好了,可以使用Arrays.binarySearch()執行快速查找。如果未排序就使用會產生不可預料的結果
- Arrays.binarySearch()的返回值大於等於0則表示找到了,否則返回負值,表示若要保持數組的排序狀態此目標元素應該插入的位置(從1開始計算)。如果數組有重複,不能保證找到的是副本中的哪一個