数组是程序中很常用的数据存储,集合List的底层也是通过数组操作的
1. 数组初始化有三种方式
直接初始化数组:int[] ary = {1, 2, 3}; 初始化一个指定长度的空数组:int[] ary = new int[10]; 初始化一个数组并赋值,不能指定长度:int[] ary= new int[]{1, 2, 3, 4};
数组长度:ary.length
数组克隆:int[] ary2 = ary.clone(),浅层克隆,如果数组中的元素为引用类型,则修改克隆后的数组元素中的属性,会影响原数组
数组复制:System.arraycopy(ary1, int n, ary2, int m, int length),将数组ary1从下标 n ~ n + length - 1 复制到ary2的 m ~ m + length - 1位置
2. java.util.Arrays
Arrays是官方提供的一个数组操作的工具类,通过该工具类我们可以满足我们常规的数组操作需要
String toString(Object[] ary):将数组元素连接为字符串,连接后的表示形式为[1, 2, 3],一般用于查看数组元素信息
void sort(Object[] ary, Comparator<? extends Object> comparator):对数组进行排序,第二个参数为自定义比较器,如果缺省第二个参数,则默认升
序排序
int binarySearch(Object[] ary, Object obj):二分法查找数组中obj元素的位置,返回元素下标,如果不存在,则返回一个负数,该方法使用注意两点
使用前要对数组进行排序,否则返回结果一般不正确
未查找到元素时,返回一个负数,不一定是-1,不能以-1判断是否查找到结果
void fill(Object[] ary, Object obj):使用元素obj填充数组
Object[] copyOf(Object[] ary, int n):复制数组的前n位元素,返回新数组,如果n大于数组的长度,则超出部分为初始化值,可用于数组扩容
Object[] copyOfRange(Object[] ary, int from, int to):复制数组下标from到to的元素,并返回新数组
boolean equals(Object[] ary1, Object[] ary2):比较两个数组是否相等,如果数组都不为空,则比较元素是否相等
如果元素类型为基本数据类型,使用==比较
如果元素类型为引用数据类型,使用equals比较
boolean deepEquals(Object[] ary1, Object[] ary2):深度比较两个数组是否相等,主要针对数组元素也是数组的情况,会递归比较下级元素,直到最深层元
素都进行比较