Java中的数组
文章目录
- 前言
- 1. 什么是数组
- 2. 数组的定义
- 2.1 数组的静态初始化
- 2.2 数组的动态初始化
- 3. 数组的元素访问
- 4. 数组的遍历
前言
我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的数组—
1. 什么是数组
数组其实就是一个容器,用来储存同种类型的数据的。
例如:想要存储一些int类型的数据
int[] array = {20,10,30,50,40};
想要存储一些String类型的数据
String[] names = {"Hoan", "Hozin", "Jin"};
如果遇到批量数据的存储和操作时,数组比变量更适合
2. 数组的定义
数组有两种初始化的方式,一种是静态初始化、一种是动态初始化。
2.1 数组的静态初始化
所谓静态初始化指的是:在定义数组时直接给数组中的数据赋值。
1. 静态初始化标准格式:
数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
//定义数组,用来存储多个年龄
int[] ages = new int[]{12, 24, 36}
//定义数组,用来存储多个成绩
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
2. 静态初始化简化格式
数据类型[] 变量名 = {元素1,元素2,元素3};
//定义数组,用来存储多个年龄
int[] ages = {12, 24, 36}
//定义数组,用来存储多个成绩
double[] scores = {89.9, 99.5, 59.5, 88.0};
注意事项:
1.定义数组是的声明有两种方式
int[] ages = {12, 24, 36};
int ages[] = {12, 24, 36}
但是基本上都是使用第一种,第二种了解即可
2.静态初始化的两种格式,也是使用第二种方式居多
练习案例:
需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。
分析:
1.看到有16、26、36、6、100这5个数据数据,而且数据值很明确;
(1)想到,可以使用数组静态初始化把这5个数据存起来2.请计算出他们部门的总销售额(这不就是求数组中数据的和吗?)
(2)必须先将数组中所有的元素遍历出来
(3)想要求和,得先有一个求和变量sum
(4)再将每一个元素和求和变量sum进行累加(求和思想)
// 1、定义一个数组存储5名员工的销售额
//索引 0 1 2 3 4
int[] money = {16, 26, 36, 6, 100};
// 3、定义一个变量用于累加求和
int sum = 0;
// 2、遍历这个数组中的每个数据。
for (int i = 0; i < money.length; i++) {
// i = 0 1 2 3 4
sum += money[i];
}
System.out.println("员工的销售总额:" + sum);
2.2 数组的动态初始化
刚才介绍了数组定义的第一种方式,第二种方式是动态初始化。动态初始化不需要我们写出具体的元素,而是指定元素类型和长度就行
//数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3];
这样就创建了一个长度为3的数组了,它会根据你所甚至的数组类型,给数组中的元素赋予默认值
数据类型 | 具体类型 | 默认值 |
---|---|---|
基本类型 | byte,short,int,long,char | 0 |
基本类型 | float,double | 0.0 |
基本类型 | boolean | false |
引用类型 | 数组,String,类,接口 | null |
练习案例:
需求:
某歌唱比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕后立即输出平均分做
选手得分
分析:
1.需要录入6名评委的分数,可以用一个数组来保存。
因为在评委没有录入分数之前,还不确定数组中应该存哪些数据。
所以可以使用数组的动态初始化
2.遍历数组中的每一个位置,并录入分数,将分数存入数组中
3.遍历数组中的每一个元素,对元素求和
// 1、定义一个动态初始化的数组,负责后期存储6个评委的打分。
double[] scores = new double[6];
Scanner sc = new Scanner(System.in);
// 2、遍历数组中的每个位置,录入评委的分数,存入到数组中去
for (int i = 0; i < scores.length; i++) {
// i = 0 1 2 3 4 5
System.out.println("请您输入当前第" + (i + 1) +"个评委的分数:");
double score = sc.nextDouble();
scores[i] = score;
}
// 3、遍历数组中的每个元素进行求和
double sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
System.out.println("选手最终得分是:" + sum / scores.length);
3. 数组的元素访问
数据存储在数组当中,我们该如果访问其中的元素呢
这里我们需要先了解一个概念:索引
索引:可以理解为是数组的编号 ,它是从0开始的
需要通过 数组名[索引]的方式来得到具体的元素
通过代码来演示:
//索引: 0 1 2
int[] arr = {12, 24, 36};
// 1、访问数组的全部数据
System.out.println(arr[0]); //12
System.out.println(arr[1]); //24
System.out.println(arr[2]); //36
//下面代码没有3索引,会出现ArrayIndexOutOfBoundsException 索引越界异常
//System.out.println(arr[3]);
// 2、修改数组中的数据
arr[0] = 66;
arr[2] = 100;
System.out.println(arr[0]); //66
System.out.println(arr[1]); 0
System.out.println(arr[2]); //100
// 3、访问数组的元素个数:数组名.length
System.out.println(arr.length);
// 技巧:获取数组的最大索引: arr.length - 1(前提是数组中存在数据)
System.out.println(arr.length - 1);
int[] arr2 = {};
System.out.println(arr2.length - 1);
4. 数组的遍历
当数组中存储了很多元素的情况下,如果我们一个一个手动的去取值,会非常非常麻烦,所以我们需要用for循环来对数据做遍历操作,就可以获取到所有元素
int[] ages = {12, 24, 36};
for (int i = 0; i < ages.length; i++) {
// i的取值 = 0,1,2
System.out.println(ages[i]);
}
注意事项:
1.索引是从0开始所以 for循环中的i是从0开始,终止条件也不包含ages.length这个索引,最大索引数是数组数量-1