数组

1. 数组特殊之处

数组与其他容器之间区别:效率;类型;保存基本类型能力。

  • 效率:数组是一种效率最高的存储和随机访问对象引用序列的方式
  • 类型:可以创建一个数组取持有某种具体类型,在编译时能够指出错误。
  • 保存基本类型:泛型之前的容器不能。

随着自动包装机制出现,容器可以使用基本基本类型。数组仅存的优点就是效率。

2. 数组初始化

  • 新生成一个数组对象时,所有引用被自动初始化为null;基本类型的数组如果是数值型的,就被自动初始化为0;如果是字符型(char)的,就被自动初始化为(char)O;如果是布尔型(boolean),自动初始化为false。

3. 返回数组

数组

4. 多维数组

  • Arrays.deepToString()方法,可以将多维数组转换为多个String。对基本类型数组和对象数组都起作用。

5. 数组与泛型

不能实际的持有泛型的数组对象,可以创建非泛型的数组,然后将其转型。

import java.util.ArrayList;
import java.util.List;

public class ArrayOfGenerics {
    @SuppressWarnings("unchecked")
	public static void main(String[] args) {
		List<String> [] ls;
		List[] la = new List[10];
		ls = (List<String>[])la;
		ls[0]=new ArrayList<String>();
		//!ls[1] = new ArrayList<Integer>();
		Object[] objects = ls;
		objects[1] = new ArrayList<Integer>();
		List<BerylliumSphere>[] spheres =
				(List<BerylliumSphere>[])new List[10];
		for(int i = 0; i < spheres.length;i++)
			spheres[i] = new ArrayList<BerylliumSphere>();// TODO 自动生成的方法存根

	}

}

6. 创建测试数组(未看)

  • Arrays.fill():用同一个值填充各个位置。
  • 数据生成器
    可以通过选择Generator的类型来创建任何类型的数据(这是策略设计模式的一个实例——每个不同的Generator表示一个不同的策略)

7. Arrays实用功能

  • 复制数组:System.arraycopy()
    System.arraycopy(源数组,从源数组起始位置开始,目标数组,目标数组起始位置,要复制数组长度)
    复制对象数组,只是复制了对象的引用,不是对对象本身拷贝,称做浅复制。
    数组
    System.arraycopy()不会执行自动包装和自动拆包,所以必须有相同的确切类型。
  • 数组比较:equal()方法
    数组相等指的是元素个数相等,对应位置元素也相等,是基于内容的。
  • 数组元素的比较
  • 数组排序:Arrays.sort()
  • 已排序的数组中查找:Arrays.binarySearch()