数组的定义
静态定义数组
格式:
数据类型[] 数组名 = new 数据类型[]{ 元素1 , 元素2 , 元素3 , … };
数据类型[] 数组名 = { 元素1 , 元素2 , 元素3 , … };
“数据类型[] 数组名” 也可以写成 “数据类型 数组名[]”
double[] score = new double[]{91, 95, 85, 78, 65, 85.5};
int[] ages = {12, 24, 21};
double score[] = new double[]{91, 95, 85, 78, 65, 85.5};
int ages[] = {12, 24, 21};
动态定义数组
定义时只确定元素的类型和数组的长度,之后再存入具体数据,不赋值元素为默认值
元素默认值:
格式:数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3];
arr[0] = 10;
System.out.println(arr[0]);
两种数组定义的特点和场景区别
- 当前已经知道存入的元素值,用静态初始化
- 当前还不清楚要存入哪些数据,用动态初始化
数组的访问
原理:数组名代表的是数组的首地址,指向数组对象,利用索引来访问后续元素
格式:数组名称[索引] n个元素,索引由0开始直到n-1
System.out.println(arr[0]); //取值
arr[2] = 100; //赋值
数组的长度属性
System.out.println(arr.length);
数组的最大索引表示:数组名.length-1,前提:元素个数大于0,空元素为-1
注意事项
- 什么类型的数组存放什么类型的数据,否则报错
- 数组一旦定义出来,程序执行的过程中,长度、类型就固定了
- 两种定义方式不能混用
对数组的遍历
就是一个一个数据的访问,利用循环进行遍历
int[] arr = {20, 30, 40, 50};
for (int i = 0; i < arr.length; i++){
System.out.println(ages[i]);
}
数组使用注意事项
- 如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutDfBoundsException(数组索引越界异常)
- 如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现NullPointerException(空指针异常)