数组的学习

开篇明义:

1、对于数组的基本看法是,你可以创建并组装它们,通过使用整形索引值访问它们的元素,并且知道它们的尺寸不能改变,这就是你所要了解的全部。

2、数组为什么特殊。数组是一种效率最高的存储和随机访问对象的引用序列的方式。代价就是他的大小被固定。并且其生命周期不能改变。而ArrayList可以通过创建新实例,然后把旧实例中的内容复制到新实例中来达到扩建的目的。但是这样就需要开销,所以效率低。总而言之,数组效率高,长度固定。List效率低,长度可变。一般用List,有特殊需求用数组。

3.数组的常用方法:

   /*Arrays类用于数组的static实用方法,其中有6个基本方法:
    * 1.equals 用于比较两个数组是否相等,deepEquals()用于多维数组
    * 2.fill() 填充数组,将数组内容全部填充为同一个参数
    * 3.sort() 用于对数组排序
    * 4.binarySearch() 用于在已经排序的数组中查找元素
    * 5.toString() 产生数组的String表示
    * 6.hashCode() 产生数组的散列码
    * 另外asList()方法接受任意的序列或数组作为其参数,并将其转变为List容器。
     */

4.System.arraycopy(Object param1,int param2,Object param3,int param4,int param5);拷贝数组。param1表示来源数组。param2表示从源数组中的什么位置开始复制的偏移量,param3表示复制的目标数组,param4表示从目标数组的什么位置开始复制的偏移量。param5是需要复制的元素个数。需要注意的是,如果越界,则会报异常,至于怎么算越界,根据前面的参数说明应该可以看懂。而且,该方法不支持自动封装。即,Integer数组只能复制给Integer数组,不能复制给int数组。且,该方法是浅复制(shallow copy),就是知识复制了该对象的引用,而不是该对象本身。

5.equals方法。数组相等的条件是元素个数必须相等,且对应位置的元素也相等。对应位置的元素的比较是通过各自元素的equals方法来判断的。对于基本类型,是用他们的包装器的equals方法来判断的。因此可知,若是字符串数组,其中的字符串尽管不是同一个对象,但其内容相同,也表示相等。因为String.equals方法表示字符串内容相等。

6.数组元素之间的比较。Arrays.sort(),可以将数组元素进行排序。排序的规则是由元素本身实现了Comparable接口,用该接口中的compareTo方法指定比较规则,然后排序。该方法在这里不细说,只需要知道该方法返回1则顺序不变,返回-1则顺序调换。Arrays.sort(a;Collections.reverseOrder())表示,数组排序后根据Collections.reverseOrder()返回的方法再反转一遍。需要特别注意的是,对应String类型的排序是根据字典顺序来的。且大写字母在前,小写字母在后。如果想忽略大小写,就需要指定特别参数:Arrays.sort(sa,String.CASE_INSENSITIVE_ORDER)

7.数组的查找。如果数组已经排好序了,就可以使用Arrays.binarySearch()执行快速查找。如果要对未排序的数组使用binarySearch(),那么将产生不可预料的后果。返回值是该元素在数组中的位置。如果返回为负数,则表示该元素应该插入的位置的相反数再减一。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

 

posted @ 2019-06-25 18:27  笑傲独行侠  阅读(299)  评论(0)    收藏  举报