1.什么是数组
介绍:数组本质就是一种存储数据的容器,可以存储同种类型的多个数据。
使用场景:发现要操作多个数据,并且多个数据是相同类型时,可以考虑使用数组来进行维护。
2.数组的定义格式
- 数据类型[] 数组名;
int[] arr;
- 数据类型 数组名[];
int arr[]
需要注意的是,这两种定义格式定义出来的只是数据类型的变量,还没有创建容器。
3.数组的静态初始化
- 完整版:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3..}; int[] arr = new int[]{11,22,33};
- 简介版:
数据类型[] 数组名 = {元素1,元素2,元素3..};
int[] arr = {11,22,33};
4.数组的动态初始化
在初始化数组的时候,只需要指定长度,系统就会分配初始值。
格式:格式 : 数据类型[] 数组名 = new 数据类型[长度];
int[] arr=new int[10];
5.静态初始化和动态初始化的对比
- 区别: 动态初始化需要手动指定数组长度,系统分配默认值。静态初始化时,手动指定元素,系统计算出数组的长度。
- 使用选择:个人认为如果要操作的数据,需求中已经明确告知,可以直接使用静态初始化。如果只明确元素个数,元素在程序运行时动态加入,可使用动态初始化数组。
6.数组的常见操作
/**
* 已知班级成绩
* 1.找出最大值并打印
* 2.找出最小值并打印
* 3.求总成绩并打印
* 4.求平均成绩并打印
* 5.统计低于平均数的元素个数
*/
public class Work05 {
public static void main(String[] args) {
int[] arr={112,22,33,44,55,66,77,99,120,66,88};
//最大值
int max=arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max){
max=arr[i];
}
}
System.out.println("最大值:"+max);
//最小值
int min=arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]<min){
min=arr[i];
}
}
System.out.println("最小值:"+min);
//总数
int sum=0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
System.out.println("总数:"+sum);
//平均值
double avg=sum*1.0/arr.length;
System.out.println("平均值为:"+avg);
//低于avg的个数
int count=0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]<avg){
count++;
}
}
System.out.println("低于平均值的个数为:"+count);
}
}
7.数组常见问题
-
ArrayIndexOutOfBoundsException : 数组索引越界异常
-
原因 : 访问了不存在的索引
-
-
NullPointerException : 空指针异常
-
原因 : 当引用数据类型变量, 记录到null之后, 代表跟堆内存的连接被切断了
这时候还要访问堆内存数据, 就会出现空指针异常
-
个人总结文章,欢迎指正交流。