数组内存分配
- 数组是对象,也就是说可以以操作对象的方式来操作数组。并且数组在虚拟机中有它特别的类型。 既然是对象,遵循Java语言中的规则所有类的顶层父类都是Object。数组的顶层父类也必须是 Object,这就说明数组对象可以向上直接转型到Object,也可以向下强制类型转换,也可以使用 instanceof关键字做类型判定
- String[]的直接父类就是Object而不是Object[]。可是Object[]的引用也可以指向String[]类型的对 象。数组类直接继承了Object,关于Object[]类型的引用能够指向String[]类型的对象,这种情况只 能是Java语法之中的一个特例,并不是严格意义上的继承。也就是说,String[]不继承自Object[], 但是我可以允许你向上转型到Object[],这种特性是赋予你的一项特权。
数组操作方式
- 数组的访问通过索引完成,即:数组名称[索引],但是需要注意的是,数组的索引从0开始,所以索 引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是0,1,2,如果此 时访问的时候超过了数组的索引范围,会产ArrayIndexOutOfBoundsException 异常
- 当数组采用动态初始化开辟空间后,数组里面的每一个元素都是该数组对应数据类型的默认值
- 数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,数组是一 个有限的数据集合,所以应该使用 for 循环
- 在 Java 中提供有一种动态取得数组长度的方式:数组名称.length;
- 数组遍历通常使用for循环来实现。也可以用foreach实现