# 第五章 数组
# 数组
如果说我想要存储很多的数据,我应该再程序中用什么来存储呢?
比如:
int a =100;
int b =100;
int c =100;
int d =100;
int e =100;
一次性声明大量的用于存储数据的变量 要存储的数据通常都是同类型数据,例如:考试成绩
# 什么是数组
数组(array)是一种用于存储多个相同类型数据的存储模型
# 数组的定义格式
格式一:数据类型[] 变量名
范例: int[] arr
格式二:数据类型 变量名[]
范例:int arr[]
# 一维数组初始化概述
Java中的数组必须先初始化,然后才能使用
初始化的意思:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
静态初始化
数组的初始化和数组的元素赋值操作同时进行
int[] arr = new int[]{1001,1002,1003,1004}
左边代码:
int[] arr:声明数组中的元素类型是int类型
右边代码:
new:为数组申请内存空间
int:说明数组中的元素类型是Int类型
[]说明是一个数组
{1001,1002,1003,1004}:数组中的数据
简写方式:
int[] arr = {1001,1002,1003,1004};
动态初始化
数组的初始化和数组的元素赋值操作分开进行
格式:数据类型[] 变量名 = new 数据类型[数组长度];
范例: int[] arr = new int[3];
左边代码: int:说明数组中的元素类型是int类型 []:说明这是一个数组 arr:这是数组的名称 右边代码: new:为数组申请内存空间 int:说明数组中的元素类型是int类型 []:说明这是一个数组 3:数组长度,其实就是数组中的元素个数
# 数组元素访问
数组变量访问方式
格式:数组名
数组内部保存的数据的访问方式
格式:数组名[索引]
索引是什么?
从0开始的编号就叫做索引
索引是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征1:索引从0开始
特征2:索引是连续的
特征3:索引逐一增加,每次加1
# 如何获取数组的长度
通过.length来获取
arr.length
# 如何遍历数组
方法一:可以通过索引号去获取数组中的内容
方法二:通过for循环去遍历数组
一维数组案例:
题目1:判断数组中的偶数和奇数的个数
输入实例1:
1 2 4 8 10 3 4 3 4
输出示例1:
6 3
题目2:判断一个数组中的最大值
输入实例1:
1 3 6 7 2
输出示例1:
7
题目3:数组去重:键盘录入一个数组,判断数组中有没有相同的数据,如果有相同的数据,去掉,然后把更新后的数据打印出来
输入实例1:
1 3 5 7 2 1 9
输出示例1:
3 5 7 2 1 9
题目4:计算数组元素的平均值
描述: 编写一个方法 calculateAverage
,接受一个整数数组作为输入,并返回数组元素的平均值。
输入: 一个整数数组。
输出: 数组元素的平均值。
示例:
输入:5 10 15 20
输出:12.5
2
题目5:反转数组
描述: 编写一个方法 reverseArray
,接受一个整数数组作为输入,并返回一个新的数组,其中元素顺序与原数组相反。
输入: 一个整数数组。
输出: 倒序排列的新数组。
示例:
输入:1 2 3 4 5
输出:5 4 3 2 1
2
题目6:合并两个数组
描述: 编写一个方法 mergeArrays
,接受两个整数数组作为输入,并返回一个包含两个输入数组所有元素的新数组。
输入: 两个整数数组。
输出: 合并后的新数组。
示例:
输入:[1, 2, 3], [4, 5, 6]
输出:[1, 2, 3, 4, 5, 6]
2
题目7:查找数组中的特定元素
描述: 编写一个方法 findTargetElement
,接受一个整数数组和一个目标整数作为输入,并返回目标整数在数组中的索引,如果不存在则返回-1。
输入: 一个整数数组和一个目标整数。
输出: 目标整数在数组中的索引或-1。
示例:
输入:[2, 4, 6, 8, 10] 6
输出:2
2
# 二维数组的使用
一维数组里面的元素还是一个一维数组,就叫做二维数组
# 二维数组的声明和初始化
//静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//动态初始化1
int[][] arr2 = new int[3][2];
//动态初始化2
int[][] arr2 = new int[3][];
1 2 10
4 5 6
7 8 9
2
3
4
5
6
7
8
9
# 二维数组的长度和遍历
获取数组的长度:
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
System.out.println(arr1.length);
System.out.println(arr1[0].length);
System.out.println(arr1[1].length);
System.out.println(arr1[2].length);
2
3
4
5
遍历二维数组:
for(int i = 0 ;i<arr1.length;i++){
for(int j = 0 ;j<arr1[i].length;j++){
System.out.print(arr1[i][j]+" ");
}
System.out.println();
}
2
3
4
5
6
题目1:给定一个5x5的二维数组,找出其中的最大值
1 2 3 2 1
4 5 6 3 4
2 3 4 9 10
1 1 2 3 4
2 3 4 5 5
2
3
4
5