数组与其它种数的容器之间的区别有三个方面: 1.效率 2 类型 3.保存基本类型的能力, 无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个数组对象用以保存指向其它对象的的引用。“[]”语法是访问数组对象的唯一方式。 对象数组和基本数组在使用上几乎是一样,唯一区别的是对象数组保存的是引用,基本类型数组直接保存基本类型的值。
在java.util.Arrays类库有一个Arrays,它有一套static 方法,提供了操作数组的实用功能.
几个主要的方法:
1.equals()
用于比较两个数组是否相等,当数组的元素个数和对应位置元素也相等时数组才相等。
2.fill()
用于以某个值填充整个数组,这里只能是以单一的值填充整个数组。
3.sort()
用于对数组排序。其中要比较的功能有两种方式
1.实现java.lang.Comparable接口,使类具有“天生”的比较能力,要实现此接口只需实现compareTo(Object obj)方法
2.使用策略设计模式,通过使用策略,将会发生变化的代码封装在它自己的类中,将策略对象交给保持不变的代码,后者使用策略实现它的算法。它是通过定义 一个实现了Comparator接口的类而创建的一个策略。这个类有compare(Object obj1,Object obj2)和equals()两个方法。一般不去实现equals()方法,因为所创建的类都是间接继承自Object,而Object带有equals() 方法。例如:Arrays.sort(a,myComparator) //其中a是一个数组,myComparator是一个实现了接口Comparator的类 。
这里若要将数组反序:
1.使用Collections.sort(arraylist,Collections.reverseOrder());但可能会得到ClassCastException
2.可以使用Collections.reverse(list); //list是要反序的数组
具体解释见: http://community.csdn.net/Expert/topic/4362/4362510.xml?temp=.7333948
4.binarySearch()
用于在已经排序的数组中查找元素,若查找成功,它的返回值等于或大于0,否则它产生负返回值,表示若要保持数组的排序状态此目标元素所应该插入的位置,这个负值的计算方式是: -(插入点)-1 其中的插入点是指,第一个大于查找对象元素在数组中的位置,如果数组所有的元素都小于查找的对象,插入点就等于数组的大小.
注意 1.如果数组包含重复的元素,则无法保证找到的是哪一个。
2.如果使用Compartor排序了某个对象数组,基本数组无法使用Comparator进行排序,在使用该方法进必须提供同样的comparator
例如:Arrays.binarySearch(a,2,myComparator); //其中a是经过myComparator排序的数组
以上所有4个方法对各个基本类型和Object类重载过.
5.asList()
接受任意的数组为参数,并将其转变为List容器.
6.arraycopy() System包中的一个静态方法
它需要5个参数:源数组,表示从源数组中的什么位置开始复制的偏移量,表示从目标数组的什么位置开始复制的偏移量,复制元素个数