咦咦咦,各位小可爱,我是你们的好伙伴------bug菌,今天又来给大家普及Java之数组篇啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
js
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
前言
在Java开发中,数组是一种常见且重要的数据结构。它可以用于存储多个相同类型的元素。本文将介绍数组的定义、使用方法以及应用场景等内容。
摘要
本文将首先介绍数组的概述,包括数组的定义和基本特性。然后,我们将通过源代码解析来详细说明如何声明、初始化和访问数组。接下来,我们将通过一些实际的应用场景案例,来展示数组在实际开发中的用途。然后,我们将对数组进行优缺点分析,以便读者全面了解使用数组的利弊。随后,我们将介绍数组类的方法和使用方式。最后,我们将给出一些测试用例,并在全文小结中对所学内容进行回顾总结,最终以总结和结尾结束。
概述
数组的定义
在Java中,数组是一种容器,可以存储多个相同类型的元素。数组的长度是固定的,一旦确定就不能改变。数组中的元素可以通过下标进行访问,下标从0开始。
数组的特性
- 数组是一种引用类型,存储在堆内存中。
- 数组可以存储各种类型的数据,包括基本类型和对象。
- 数组的长度是确定的,一旦创建就无法改变。
源代码解析
声明数组
java
int[] arr; // 声明一个整型数组
代码拓展
根据如上的代码拓展,给大家个详细解读。 要声明一个整型数组,你可以使用以下代码:
java
int[] arr;
这行代码声明了一个名为arr
的整型数组。请注意,这只是一个数组的声明,并未定义数组的大小或分配内存空间。在使用数组之前,你需要确定数组的大小,并通过new
关键字来分配内存空间,例如:
java
arr = new int[5]; // 分配包含5个整数的数组
这将创建一个包含5个整数的数组,并将其分配给arr
变量。你也可以同时进行声明和初始化的操作,例如:
java
int[] arr = new int[5]; // 声明并分配包含5个整数的数组
初始化数组
java
arr = new int[5]; // 创建一个长度为5的整型数组
代码拓展
根据如上的代码拓展,给大家个详细解读。
这段代码创建了一个长度为5的整型数组arr
。数组的元素类型是整型(int
)。
请注意,此处只是声明了数组,并没有为数组的元素分配具体的值。如果需要为数组的元素赋值,可以使用下标操作符[]
来对数组的元素进行访问和修改。例如,arr[0] = 10;
将数组的第一个元素赋值为10。
还可以使用循环结构(如for
循环)来对数组的元素进行初始化,如下所示:
java
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
}
这段代码将数组的元素分别初始化为1、2、3、4、5。在使用数组之前,建议先为数组的元素进行初始化操作,以避免出现未定义的行为。
访问数组元素
java
arr[2] = 10; // 给数组下标为2的元素赋值为10
int num = arr[2]; // 获取数组下标为2的元素的值
代码拓展
根据如上的代码拓展,给大家个详细解读。
根据你的代码片段,数组arr
下标为2的元素被赋值为10。要获取该元素的值,可以使用变量num
来存储。下面是完整的代码示例:
java
int[] arr = new int[3]; // 创建一个长度为3的整数数组
arr[2] = 10; // 给数组下标为2的元素赋值为10
int num = arr[2]; // 获取数组下标为2的元素的值
System.out.println(num); // 输出结果:10
请注意,数组的下标是从0开始的,所以arr[2]
表示数组中的第3个元素。
应用场景案例
案例一:计算平均成绩
java
package com.example.javase.bugTest;
/**
* @Author bug菌
* @Date 2024-02-06 18:21
*/
public class Test {
public void test() {
int[] scores = {89, 92, 78, 86, 94}; // 学生成绩数组
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
double average = sum / scores.length; // 计算平均成绩
System.out.println("平均成绩:" + average);
}
}
代码拓展
根据如上的代码拓展,给大家个详细解读。
这段代码是用来计算学生的平均成绩的。具体的分析如下:
- 创建一个名为
scores
的整型数组,用来存储学生的成绩。 - 创建一个整型变量
sum
并初始化为0,用来存储成绩的总和。 - 使用
for
循环遍历数组中的每个元素。循环会从0开始,一直到scores.length-1
结束。 - 在循环中,将每个成绩
scores[i]
累加到sum
中。 - 循环结束后,计算平均成绩。将
sum
除以scores.length
,得到一个整数结果。 - 创建一个双精度浮点型变量
average
,将整数结果赋给它,用来存储平均成绩。 - 使用
System.out.println
方法打印平均成绩的结果。
不过需要注意的是,这段代码存在一个问题,即计算平均成绩时使用的是整数除法。如果想要得到精确的平均成绩,应使用浮点除法。修正方法是将计算平均成绩的部分改为: double average = (double)sum / scores.length;
这样可以将sum
强制转换为double
类型,从而进行浮点除法的计算。这样得到的平均成绩将会是一个浮点数。
案例二:查找最大值
java
public void test(){
int[] numbers = {5, 8, 2, 10, 3}; // 数字数组
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("最大值:" + max);
}
代码拓展
根据如上的代码拓展,给大家个详细解读。 这段代码的功能是找到给定整数数组中的最大值并打印出来。
代码分析如下:
- 首先,创建一个整数数组numbers,其中包含了一组数字。
- 接下来,定义一个变量max,并将其初始值设置为数组中的第一个元素numbers[0]。
- 使用for循环遍历数组中的每个元素,循环变量i从1开始,直到数组末尾。
- 在循环体内,通过比较当前数组元素numbers[i]与max的大小来更新max的值。如果numbers[i]大于max,则将max更新为numbers[i]。
- 最后,使用System.out.println语句将最终的最大值max打印出来。
这段代码通过遍历整数数组并对每个元素进行比较,找到最大值并输出。在给定的数字数组[5, 8, 2, 10, 3]中,最大值是10,所以输出结果将是"最大值:10"。
代码拓展
根据如上的代码拓展,给大家个详细解读。
这段代码是一个求取数组中最大值的方法。代码首先创建一个整数数组numbers
,然后通过遍历数组找出其中的最大值。
在代码中,首先将数组中的第一个元素赋值给变量max
作为初始值。然后使用for
循环遍历数组中的其他元素。每次循环时,将当前元素与max
进行比较,如果当前元素大于max
,则将当前元素赋值给max
。这样,当循环结束时,max
将保存数组中的最大值。
最后,使用System.out.println()
方法将最大值输出到控制台。
该方法应该被放置在一个类中,并且需要有一个main
方法来调用test1
方法,例如:
java
public class Main {
public static void main(String[] args) {
test1();
}
public static void test1(){
// 代码逻辑
}
}
这样才能正确运行。
优缺点分析
优点
- 数组可以快速访问任意位置的元素,因为数组的元素在内存中连续存储。
- 数组适合存储一组固定长度的数据,使用方便且效率高。
缺点
- 数组的长度固定,无法动态改变。
- 数组的插入和删除操作较复杂,需要移动大量元素。
类代码方法介绍
java
package com.example.javase.bugTest;
/**
* @Author bug菌
* @Date 2024-02-06 17:58
*/
public class ArrayUtils {
// 计算数组的平均值
public static double average(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return (double) sum / arr.length;
}
// 查找数组中的最大值
public static int findMax(int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
拓展:
如上这段代码我定义的是一个ArrayUtils
类,包含了两个方法:average
和findMax
。下面是对代码的分析:
-
average
方法:这个方法用于计算给定整型数组的平均值,返回一个double
类型的结果。它通过一个循环遍历数组的每个元素,并将它们累加到sum变量中。然后,返回sum除以数组长度的结果。需要注意的是,为了得到精确的平均值,sum的类型被转换为了double
。 -
findMax
方法:这个方法用于查找给定整型数组中的最大值,返回一个int类型的结果。它通过遍历数组的每个元素,将当前的最大值存储在max变量中。在每次遍历时,如果当前元素大于max,则更新max的值。最后,返回max作为最大值。
整体而言,这段代码实现了一些基本的数组操作。注意,代码没有进行输入参数的验证,例如,对于空数组的处理。在实际使用时,应该添加相应的处理逻辑来确保代码的健壮性。
测试用例
测试代码
java
package com.example.javase.bugTest;
/**
* @Author bug菌
* @Date 2024-02-06 17:57
*/
public class ArrayTest {
public static void main(String[] args) {
int[] nums = {3, 1, 4, 1, 5, 9};
double avg = ArrayUtils.average(nums);
System.out.println("平均值:" + avg);
int max = ArrayUtils.findMax(nums);
System.out.println("最大值:" + max);
}
}
测试结果
根据如上代码进行测试,执行结果展示如下:
代码拓展
根据如上的代码拓展,给大家个详细解读。 代码看起来是一个简单的Java类,名为ArrayTest。它包含一个main方法,用于测试ArrayUtils类的功能。
在main方法中,首先创建了一个int类型的数组nums,并初始化了其元素值为{3, 1, 4, 1, 5, 9}。
然后,调用ArrayUtils类的average方法,将nums数组作为参数传入。该方法返回nums数组的平均值,并将结果赋给avg变量。
接着,通过System.out.println打印出"平均值:"和avg的值。
接下来,调用ArrayUtils类的findMax方法,将nums数组作为参数传入。该方法返回nums数组中的最大值,并将结果赋给max变量。
最后,再通过System.out.println打印出"最大值:"和max的值。
需要注意的是,这段代码中使用了一个自定义的ArrayUtils类,来提供一些数组操作的功能。你可能需要查看ArrayUtils类的实现来更好地理解代码的功能。
全文小结
本文介绍了Java中数组的基本概念、定义和特性。通过源代码解析和应用场景案例,详细说明了数组的声明、初始化和访问方法。对数组的优缺点进行了分析,并提供了一个存储数字的数组类的代码示例。最后,给出了针对数组类的方法编写的测试用例。
总结
通过本文的学习,我们了解到数组在Java开发中的重要性和应用场景。掌握了数组的定义、初始化、访问和常用操作方法。当需要存储一组固定长度的数据时,可以优先考虑使用数组。
结尾
希望本文能帮助大家更好地理解和运用Java中数组的相关知识。在实际开发中,灵活运用数组可以提高代码效率和质量,在此谢谢大家的耐心阅读!
ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看如下的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬。
「赠人玫瑰,手留余香」,咱们下期拜拜~~
附录源码
如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
☀️建议/推荐你
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
📣关于我
我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。