1.什么是数组:

💡数组(Array)是一种用于存储多个相同类型数据的存储模型

2.数组的概述

💡 数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。 💡 一次性声明大量用于存储数据的变量,存储的数据往往都是相同类型的

3.数组定义

  1. 数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
  2. 举例:int[] x = new int[100];

说明

  • 数据类型: 数组中存储元素的数据类型
  • [] 表示数组的意思
  • 变量名 自定义标识符
  • new 创建容器关键字
  • 元素个数,就是数组中,可以存储多少个数据 (恒定, 定长)
  • 数组是一个容器: 存储到数组中的每个元素,都有自己的自动编号(索引(index), 下标, 角标)
  • 访问数组存储的元素,必须依赖于索引, 数组名[索引]
  • 数组中最小的索引是0,最大的索引是“数组的长度-1”。

    1.动态初始化

    💡 初始化时只指定数组长度,由系统为数组分配初始值

  1. 格式: 数据类型[] 变量名 = new 数据类型[数组长度]
  2. 范例: int[] arr = new int[3]

左边:
int: 说明数组中的元素类型是int类型
[] : 说明是一个数组
arr: 数组名称
右边:
new: 为数组申请内存空间
int: 说明数组中的元素类型是int类型
[] : 说明是一个数组
3 : 数组长度(元素个数)为3

2.静态初始化

💡 初始化时指定每个数组元素的初始值,由系统决定长度

  1. 格式: 数据类型[] 变量 = new 数据类型[]{数据1,数据2,数据3,...}
  2. 示例: int[] arr = new int[]{1,2,3};
  3. 简化格式: 数据类型[] 变量 = new 数据类型{1,2,3,...}
  4. 示例: int[] arr = {1,2,3};

4.报错

报错问题:
索引越界: 访问了数组中不存在索引对象的元素,造成索引越界错误
空指针异常: 访问了数组中已经不在指向堆内存的数据,造成空指针异常
NULL: 空值,引用数据类型的默认值,表示不指向任何有效对象

获取数组元素数量: 数组名.length

5.案例

  1. //声明定义数组
  2. int[] scores = new int[5];
  3. int sum = 0; //总成绩
  4. Scanner input = new Scanner(System.in);
  5. System.out.println("请输入5名学生的成绩:");
  6. for(int i = 0; i < scores.length; i++){
  7. //存到数组中
  8. scores[i] = input.nextInt();
  9. //通过sum 求和
  10. sum = sum + scores[i];
  11. }
  12. System.out.println("平均分是:" + (double)sum/scores.length);
  1. int[] num = new int[5];
  2. int max = num[0];
  3. Scanner input = new Scanner(System.in);
  4. //循环录入数值
  5. for (int i = 0; i < num.length; i++) {
  6. num[0] = input.nextInt();
  7. }
  8. for (int i = 0; i < num.length; i++) {
  9. if (num[i] > max) {
  10. max = num[i];
  11. }
  12. }
  13. System.out.println("最大值:" + max);
  1. int[] list = new int[6]; // 长度为为6的数组
  2. list[0] = 99;
  3. list[1] = 85;
  4. list[2] = 82;
  5. list[3] = 63;
  6. list[4] = 60;
  7. int index = list.length; //保存新增成绩插入位置
  8. System.out.println("请输入新增成绩: ");
  9. Scanner input = new Scanner(System.in);
  10. int num = input.nextInt(); // 输入要插入的数据
  11. //找到新元素的插入位置
  12. for(int i = 0; i < list.length; i++){
  13. if(num > list[i]){
  14. index = i;
  15. break;
  16. }
  17. }
  18. //元素后移
  19. for(int j = list.length-1; j > index; j--){
  20. list[j] = list[j-1]; //index下标开始的元素后移一个位置
  21. }
  22. list[index] = num;//插入数据
  23. System.out.println("插入成绩的下标是:"+index);
  24. System.out.println("插入后的成绩信息是: ");
  25. for (int k = 0; k < list.length; k++) { // 循环输出目前数组中的数据
  26. System.out.print(list[k] + "\t");
  27. }