数组的描述
数组是编程语言中最常见的一种数据结构,可以存储多个相同类型的数据,每个数组元素可以存放一个数据。通常使用数组元素的索引来操作数组元素。数组的元素索引从0开始。
数组初始化完成之后,数组在内存中占用的空间将被固定下来,数组的长度也被固定,即使把一个数组里的元素全部清空,数组所占的空间依然被保留。
java中的数组既可以存放基本类型的数据,也可以存放引用类型的数据。
数组本身也是一种引用类型。
定义数组
//定义了一个数组类型的名为arr的引用变量,但是该变量未指向任何有效内存,所以此时数组并不能被使用
//数组的长度是在数组初始化时确定的而不是定义时确定的
int[] arr;
初始化数组
java中的数组必须先初始化,然后才能使用。初始化数组就是为数组在内存中分配空间并为每个数组元素赋默认值(默认值为0)
静态初始化:在初始化时显示的指定每个元素的初始值,由系统决定数组长度
//定义名为arr的int类型数组
int[] arr;
//初始化时只指定每个数组元素的初始值,不指定长度
arr = new int[]{1,2,3,4,5};
//定义数组和初始化数组简化代码
int[] arr = new int[]{1,2,3,4,5};
动态初始化:初始化时只指定数组长度,由系统为每个元素指定初始值
//定义并初始化一个长度为10的int类型数组
int[] arr = new arr[10];
//允许初始化时元素类型为定义时元素类型的子类
Object[] o = new String[10];
使用数组
通过 数组名[元素索引] 的方式就能操作数组元素了
//定义并初始化一个长度为10的int类型数组
int[] arr = new arr[10];
//将数组的第一个元素的值更改为1
arr[0] = 1;
操作数组时如果索引值小于0或者大于等于数组的长度时编译器不会报错,但是程序运行时会出现ArrayIndexOutOfBoundsExcepton异常
for循环遍历数组
所有的数组都提供了length属性,通过这个属性能获取到数组的长度,从而可以通过for循环遍历数组
int[] arr = new int[]{5,4,3,2,1};
int length = arr.length;
for (int i = 0; i < length; i++) {
System.out.println(arr[i]);
}
foreach遍历数组
从java5之后,java提供了foreach这种更简单的循环,可以用来遍历数组和集合
int[] arr = new int[]{5,4,3,2,1};
int length = arr.length;
for(int i : arr){
//使用该方式遍历数组或者集合元素时不要在循环内部对循环变量赋值
//此处的变量i只保存了数组元素的值
System.out.println(i);
}