数组(array)是一种用于存储多个相同类型数据的存储模型。
Java中的数组必须先初始化,然后才能使用。所谓初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组在初始化时,会为存储空间添加默认值:
每一个new出来的东西都有一个地址值,使用完毕后,会在垃圾回收器空闲时被回收。
1、动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 变量名 = new 数据类型[数组长度]; 范例: int[] arr = new int[3];
2、静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式: 数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,...} 简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,...} 范例: int[] arr = new int[]{1,2,3,4,5}; 范例(简化): int[] arr = {1,2,3,4,5};
数组变量访问方式: 格式:数组名 范例:System.out.println(arr); //输出的是arr地址值 数组内部保存的数据的访问方式: 格式:数组名[索引](数组名[索引]是一种特殊的变量名,索引从0开始) 范例:System.out.println(arr[2]); //输出的是arr[2]的值
1、多个数组指向相同的内存:
int[] arr = new int[3]; arr[0] = 100; arr[1] = 100; arr[2] = 100; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //定义第二个数组指向第一个数组 int[] arr1 = arr arr1[0] = 200; arr1[1] = 200; arr1[2] = 200; //输出两个数组的名及元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr1); System.out.println(arr1[0]);
2、索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。
3、空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。
4、null:空值,引用数据类型的默认值,表示不指向任何有效对象。
格式:数组名.length 范例:arr.length