1.介绍
一组相同类型的引用集合,
长度固定,永远不可变,元素长度极限为 Integer.MAXVALUE,
下标从0开始,元素最后一个值下标:Array.length-1
2.创建
1.new String[]{};
2.new String[int]
3.{“”,”“};
4.Array.newInstance(compareType,leng),适用于 泛型!
数组的创建必须要长度,一旦初始化结束,长度将不可变! 初始化时,数组内元素将会自动初始化(给长度内每个元素都赋对应的默认值)
3.数组的类型
1.数组中元素的类型可以是任意类型,包括 数组类型,数组组成的数组(多维数组)
2.数组类型不是类,但是实例是类,继承Object类 实现Cloneable接口,同时还是实现 Serializable接口
3.数组都有一个length字段表示长度,修饰符为 public final int,也就是说 不能通过修改length来改变数组长度,这点和js不同
4.数组类型放大,数组协变
1.任意类型数组都可以放大类型
Object,Cloneable,Serializable
2.基本数组无法放大成除上述3种外
3.引用类型,如果T能指定给S类型,那么T[]就能指定成S[]
并不推荐数组放大,因为
// 这样写完全合法
String[] words = {"Hello World!"};
Object[] objects = words;
objects[0] = new Integer(42);//运行时错误
5.数组的复制
1.调用 clone()
2.void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
6.数组的扩容
1.本质上是替换是一个数组实例而非真正的扩容
2.Arrays.copyOf(xxx[],newLen);