数组只是相同类型的、同一标识符名称封装到一起的一个对象序列或基本类型数据序列。
数组是通过方括号下标操作符[]
来定义和使用的。 要定义一个数组,只需在类型名后加上一对空方括号即可int[] a1
,方括号也可以置于标识符后面int a1[]
编译器不允许指定数组的大小。现在拥有的只是对数据的引用(已经为该引用分配了足够的存储空间),而且也没给数组对象本身分配任何空间。为了给数组创建相应的存储空间,必须写初始化表达式。
数组的三种初始化方式:
// 第一种,必须在创建数组的地方出现,由一对花括号括起来的值组成的
// 这种情况下,存储空间的分配(等价于使用new)将由编译器负责
// 初始化列表的最后一个逗号是可选的
int[] a1 = {1,2,3,4,5};
// 第二种,使用new并定义数组的长度
// 数组中元素的基本类型值会自动初始化成空值(对于数组和字符,就是0,对于布尔型,是false)
// 对于这种情况,初始化动作可以出现在代码的任何地方
int[] a1 = new int[20];
// 第三种
int[] a1 = new int[]{1,2,3,4,5};
将一个数组赋值给另一个数组
// 这里a2得到了关于a1的一个引用
// 此时修改a2,a1也可以看到
int[] a1 = {1,2,3,4,5};
a2 = a1;
获得数组内包含了多少个元素
int[] a1 = {1,2,3,4,5};
a1.length; //数组的长度
a1.length - 1; // 数组最大下标数length-1,如果访问超过的下标边界,Java会出现运行时错误
创建非基本类型的数组
// 创建一个非基本类型的数组,那么就是创建了一个引用数组
Integer[] a = new Integer[10];
a[i] = new Integer(1); // 创建引用数组,即使使用new的方式,也还只是一个引用数组,并且直到通过创建新的Integer对象,并把对象赋值给引用,初始化进程才算结束,如果忘记了创建对象并且试图使用数组中的空引用,就会在运行时产生异常