数组
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()