1.什么是数组:
💡数组(Array)是一种用于存储多个相同类型数据的存储模型
2.数组的概述
💡 数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。 💡 一次性声明大量用于存储数据的变量,存储的数据往往都是相同类型的
3.数组定义
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
举例:int[] x = new int[100];
说明
- 数据类型: 数组中存储元素的数据类型
- [] 表示数组的意思
- 变量名 自定义标识符
- new 创建容器关键字
- 元素个数,就是数组中,可以存储多少个数据 (恒定, 定长)
- 数组是一个容器: 存储到数组中的每个元素,都有自己的自动编号(索引(index), 下标, 角标)
- 访问数组存储的元素,必须依赖于索引, 数组名[索引]
- 数组中最小的索引是0,最大的索引是“数组的长度-1”。
1.动态初始化
💡 初始化时只指定数组长度,由系统为数组分配初始值
格式: 数据类型[] 变量名 = new 数据类型[数组长度]
范例: int[] arr = new int[3]
左边:
int: 说明数组中的元素类型是int类型
[] : 说明是一个数组
arr: 数组名称
右边:
new: 为数组申请内存空间
int: 说明数组中的元素类型是int类型
[] : 说明是一个数组
3 : 数组长度(元素个数)为3
2.静态初始化
💡 初始化时指定每个数组元素的初始值,由系统决定长度
格式: 数据类型[] 变量 = new 数据类型[]{数据1,数据2,数据3,...}
示例: int[] arr = new int[]{1,2,3};
简化格式: 数据类型[] 变量 = new 数据类型{1,2,3,...}
示例: int[] arr = {1,2,3};
4.报错
报错问题:
索引越界: 访问了数组中不存在索引对象的元素,造成索引越界错误
空指针异常: 访问了数组中已经不在指向堆内存的数据,造成空指针异常
NULL: 空值,引用数据类型的默认值,表示不指向任何有效对象
5.案例
//声明定义数组
int[] scores = new int[5];
int sum = 0; //总成绩
Scanner input = new Scanner(System.in);
System.out.println("请输入5名学生的成绩:");
for(int i = 0; i < scores.length; i++){
//存到数组中
scores[i] = input.nextInt();
//通过sum 求和
sum = sum + scores[i];
}
System.out.println("平均分是:" + (double)sum/scores.length);
int[] num = new int[5];
int max = num[0];
Scanner input = new Scanner(System.in);
//循环录入数值
for (int i = 0; i < num.length; i++) {
num[0] = input.nextInt();
}
for (int i = 0; i < num.length; i++) {
if (num[i] > max) {
max = num[i];
}
}
System.out.println("最大值:" + max);
int[] list = new int[6]; // 长度为为6的数组
list[0] = 99;
list[1] = 85;
list[2] = 82;
list[3] = 63;
list[4] = 60;
int index = list.length; //保存新增成绩插入位置
System.out.println("请输入新增成绩: ");
Scanner input = new Scanner(System.in);
int num = input.nextInt(); // 输入要插入的数据
//找到新元素的插入位置
for(int i = 0; i < list.length; i++){
if(num > list[i]){
index = i;
break;
}
}
//元素后移
for(int j = list.length-1; j > index; j--){
list[j] = list[j-1]; //index下标开始的元素后移一个位置
}
list[index] = num;//插入数据
System.out.println("插入成绩的下标是:"+index);
System.out.println("插入后的成绩信息是: ");
for (int k = 0; k < list.length; k++) { // 循环输出目前数组中的数据
System.out.print(list[k] + "\t");
}