今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!
在Java编程语言中,数组是一种基本且广泛使用的数据结构。它允许存储一定数量的元素,这些元素通常是相同类型的。数组的应用遍布各个编程领域,从简单的数据存储到复杂的算法实现。本文将探讨Java数组的一些常见应用场景。
本文将概述Java数组在不同编程任务中的应用,并提供实际的使用案例。通过分析数组在不同场景下的优势和局限性,帮助读者更好地理解数组的实用性和适用性。
数组在Java中的使用非常灵活,它们可以用于实现多种编程任务。以下是一些数组的常见应用场景:
以下是一些Java数组使用的示例代码:
int[] numbers = {3, 1, 4, 1, 5};
Arrays.sort(numbers);
int target = 4;
int index = Arrays.binarySearch(numbers, target);
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};
int[][] transposed = new int[matrix[0].length][matrix.length];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
transposed[j][i] = matrix[i][j];
}
}
考虑一个场景,我们需要对用户输入的成绩进行排序和计算平均分:
Scanner scanner = new Scanner(System.in);
int[] scores = new int[5];
for (int i = 0; i < scores.length; i++) {
scores[i] = scanner.nextInt();
}
Arrays.sort(scores);
double average = Arrays.stream(scores).average().orElse(Double.NaN);
针对如上示例代码,这里我给大家详细的代码剖析下,以便于帮助大家理解的更为透彻,帮助大家早日掌握。
这段Java代码演示了如何使用数组来收集用户输入的成绩,对这些成绩进行排序,并计算平均值。以下是对代码的逐行解释:
Scanner scanner = new Scanner(System.in);
:创建一个Scanner
对象,用于从标准输入(通常是键盘)读取数据。int[] scores = new int[5];
:声明并初始化了一个长度为5的整型数组scores
,用于存储用户的成绩。for
循环,用于连续读取5个整数输入,这些整数是用户的成绩,并将它们存储在scores
数组中。Arrays.sort(scores);
:使用Arrays
类的sort
方法对scores
数组中的元素进行升序排序。scores
的平均值。Arrays.stream(scores)
将数组转换为流。average()
是流的一个终止操作,它返回一个OptionalDouble
,包含计算出的平均值。orElse(Double.NaN)
是OptionalDouble
的方法,如果OptionalDouble
为空(意味着数组为空或所有成绩都是0),则返回Double.NaN
。当这段代码执行时,程序将首先提示用户输入5个成绩。用户输入完毕后,程序会输出这些成绩排序后的结果,并计算这些成绩的平均值。
示例输出可能如下所示:
原始成绩: [70, 85, 90, 60, 75]
排序后的成绩: [60, 70, 75, 85, 90]
平均成绩: 77.0
请注意,这段代码没有包含用户输入提示和输出成绩的代码。在实际应用中,你可能需要添加额外的代码来提供更好的用户体验,例如打印出每个输入的成绩,并在计算平均值之前和之后提供清晰的输出。
此外,这段代码没有包含关闭Scanner
对象的语句。在实际应用中,当不再需要从标准输入读取数据时,应该调用scanner.close()
来关闭Scanner
,释放与之关联的资源。同时,这段代码没有错误处理机制,比如检查用户输入是否确实是整数。在实际应用中,应该添加适当的异常处理来提高程序的健壮性。
Arrays.sort()
:对数组进行排序。Arrays.binarySearch()
:在已排序的数组中进行二分查找。Arrays.copyOfRange()
:复制数组的一部分。以下是使用main
函数的一个测试用例,演示了数组排序和搜索:
/**
* @Author ms
* @Date 2024-07-31 11:26
*/
public class Test10 {
public static void main(String[] args) {
int[] data = {10, 20, 5, 1};
System.out.println("原始数组: " + Arrays.toString(data));
Arrays.sort(data);
System.out.println("排序后的数组: " + Arrays.toString(data));
int searchResult = Arrays.binarySearch(data, 20);
System.out.println("元素 20 的索引: " + searchResult);
}
}
根据如上测试用例,我本地演示结果展示如下,仅供参考哈,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。
针对如上示例代码,这里我给大家详细的代码剖析下,以便于帮助大家理解的更为透彻,帮助大家早日掌握。
这段Java代码是一个完整的程序,演示了如何使用Java标准库中的Arrays
类对数组进行排序和二分查找操作。以下是对代码的逐行解释:
/**
* @Author ms
* @Date 2024-07-31 11:26
*/
public class Test10 {
Test10
的公共类。 public static void main(String[] args) {
main
方法,它接受一个字符串数组args
作为参数。 int[] data = {10, 20, 5, 1};
data
,包含四个元素。 System.out.println("原始数组: " + Arrays.toString(data));
Arrays.sort(data);
Arrays
类的sort
方法对数组data
进行排序。 System.out.println("排序后的数组: " + Arrays.toString(data));
int searchResult = Arrays.binarySearch(data, 20);
Arrays
类的binarySearch
方法在已排序的数组data
中查找元素20的位置。 System.out.println("元素 20 的索引: " + searchResult);
binarySearch
方法将返回一个负数。当这段代码执行时,它将首先打印出原始数组,然后是排序后的数组,最后是元素20的索引位置。输出结果将类似于:
原始数组: [10, 20, 5, 1]
排序后的数组: [1, 5, 10, 20]
元素 20 的索引: 3
这段代码展示了Java中数组排序和查找的基本操作,这些操作在处理数据集合时非常有用。Arrays.sort()
方法对数组进行原地排序,而Arrays.binarySearch()
方法则利用已排序数组的特点,通过二分查找算法高效地定位元素。如果数组未排序或元素不存在于数组中,binarySearch
将返回一个负数,表示元素应该插入的位置以维持排序。在本例中,由于数组已经排序,binarySearch
能够直接返回元素20的正确索引,即3。
数组在Java中的使用非常广泛,它们在不同的应用场景下都发挥着重要的作用。从基本的排序和搜索到复杂的算法实现,数组作为一种基础数据结构,其重要性不言而喻。
本文详细介绍了Java数组的常见应用场景,并通过实际代码示例进行了展示。数组以其简单性和高效性,在编程中扮演着不可或缺的角色。虽然它们有局限性,但在适当的场景下使用可以极大地提高程序的性能和可读性。希望读者能够通过本文加深对Java数组应用的理解,并在实际编程中灵活运用。
... ...
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
***
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。