当需要持有多个对象的时候,我们可以选择的方式有数组和集合。
首先来看一个有关于数组的一些基本概念
- 数组与其他容器的区别在于:效率、类型和持有基本类型的能力。
- 考虑到效率和类型检查应该尽量使用数组。
- 数组是一个引用,引用了堆上的一系列对象。
- 大小固定。如果需要改变大小只能是新建一个数组,然后拷贝数组到新的数组中,ArrayList就是采用的这种方式。
- 数组能够持有基本类型,而其他容器类只能够持有包装之后的类。
数组的声明与初始化
声明可以使用这样的方式
int[] a = new int[1];
int[][] b = new int[1][]; 必须指定行数,而每一行放什么可以暂时不指定。
初始化的时候应该是如下的语法:
int[] d = new int[]{1,2,};// 注意最后一个逗号可有可无。
int[][] e = new int[][]{new int[1],new int[1]};
除了这样的初始化方法之外,还有就是使用下标进行初始化,另外还有默认初始化,引用为Null,其他为0,boolean为false
Arrays类
为了更好的使用数组,java还提供了一个工具类Arrays,来辅助数组进行工作。
fill() 填充数组,但是只能够把整个数组都填充成一个值。
equals()比较两个数组是否相等,是两个数组的个数和每个元素的equals()都返回true,才返回true。
asList()。可以接受任意的数组,转变为List容器。
sort()排序。
有两种,一种是数组中的元素必须是实现了Comparable的接口,这样就能够利用回调技术进行排序,如下:
还有一种方式是传入一个实现了Comparable接口的对象。这两种方式都是策略模式的一种表现方式。如下:
binarySearch() 排序之后才能够使用binarySearch()进行查找。这是一种比较高效的查找。
System.arraycopy()
用于进行数组的复制,具体的调用方式为:System.arraycopy(数组源,数组源开始复制的偏移量,目标数组,目标数组的变异量,复制的个数)
数组因为相对于其他容器来讲能够持有基本类型,还拥有比较高的效率,因此在能够确认对象个数的情况下,都应该使用数组。