主页 > 开源代码  > 

JavaSE:数组

JavaSE:数组
走进 Java 数组:新手入门指南

在 Java 编程的领域中,数组是一类极为基础且应用广泛的数据结构。它如同一个精心整理的收纳盒,专门用来有序存放相同类型的数据。对于刚踏入 Java 编程世界的新手而言,熟练掌握数组的使用方法,是提升编程技能的重要开端。接下来,让我们一同深入探索 Java 数组的各个方面。

一、数组的基础概念

数组本质上是一组相同类型数据的有序集合。打个比方,你有一个专门用来放球类的收纳筐,里面放了篮球、足球、排球。这里的每个球就相当于数组中的一个元素,而整个收纳筐就代表了这个数组。数组中的每个元素都有其对应的编号,我们将其称作索引,借助这个索引,就能迅速定位到我们需要的元素。例如,最先放入的篮球,其索引为 0,随后放入的足球索引是 1,依此类推。

归纳

数组本身是一组相同数据类型元素的集合,是一个容器;

数组可以存储基本数据类型,也可以存储引用数据类型;

数组创建时必须指定长度,且长度不可变;

数组中每个元素空间是连续的;

二、数组的创建方式

在 Java 里,创建数组主要有以下几种常见方式:

直接初始化 // 创建一个存储整数的数组,并同时完成元素的初始化。此处创建的数组名为numbers,其中包含5个整数 int[] numbers = {1, 2, 3, 4, 5}; 分步声明、分配空间与初始化 // 先声明一个字符串数组,此时仅仅是告知程序将有一个用于存放字符串的数组,尚未分配实际的内存空间 String[] names; // 接着为数组分配能够存储3个元素的空间,这意味着此刻该数组可以容纳3个字符串 names = new String[3]; // 最后对数组元素进行初始化,给数组中的每个位置赋予具体的值 names[0] = "小李"; names[1] = "小张"; names[2] = "小王"; 三、数组元素的访问

数组中的元素通过索引来访问,索引从 0 开始计数。例如,在上述的numbers数组中,numbers[0]能够获取到第一个元素 1,numbers[2]则可以获取到第三个元素 3。

// 从numbers数组中获取第一个元素,并将其存储到firstNumber变量中 int firstNumber = numbers[0]; // 输出获取到的第一个数字 System.out.println("第一个数字是:" + firstNumber); 四、数组的遍历方法

遍历数组,就是依次访问数组中的每一个元素。常见的遍历方式有以下两种:

使用 for 循环 // i从0开始,只要i小于数组numbers的长度,循环就会持续进行 // 每完成一次循环,i的值就会增加1,以此实现对数组中每个元素的顺序访问 for (int i = 0; i < numbers.length; i++) { // 输出每个元素的序号以及对应的数值 System.out.println("第" + (i + 1) + "个数字是:" + numbers[i]); } 使用增强 for 循环(foreach 循环) // 对于numbers数组中的每一个元素,都会将其赋值给number变量 // 然后执行花括号内的代码 for (int number : numbers) { // 输出元素的值 System.out.println("数字是:" + number); }

增强 for 循环的语法更为简洁,尤其适用于仅需读取数组元素,而无需对元素索引进行操作的场景。

五、数组的迭代操作

迭代和遍历的概念相近,都是逐个访问数组中的元素。除了上述两种循环方式外,还可以借助Iterator接口来实现数组的迭代(尽管数组本身并不直接实现该接口,但可通过一些手段间接达成)。不过,对于数组操作而言,前面介绍的两种循环方式基本能够满足大多数实际需求。例如,当我们想要打印出names数组中所有人的名字时,使用 for 循环和增强 for 循环就能轻松实现,也就无需采用相对复杂的Iterator接口。

六、数组的排序算法 冒泡排序

冒泡排序是一种较为简单的排序算法。其工作原理类似水中气泡上升的过程,它会对相邻的两个元素进行比较,如果顺序不符合要求,就将它们交换位置。每一轮比较结束后,当前最大(或最小)的元素就会被 “移动” 到数组的末尾(或开头)。

public static void bubbleSort(int[] arr) { // 获取数组的长度 int n = arr.length; // 外层循环用于控制比较的轮数,总共需要进行n - 1轮比较 for (int i = 0; i < n - 1; i++) { // 内层循环控制每一轮比较的次数,随着外层循环的推进,每一轮的比较次数会逐渐减少 for (int j = 0; j < n - i - 1; j++) { // 如果当前元素大于下一个元素,就交换它们的位置 if (arr[j] > arr[j + 1]) { // 定义一个临时变量,用于交换元素时暂存数据 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } 选择排序

选择排序的核心思路是在每一轮从数组中挑选出最小(或最大)的元素,然后将其放置到数组的开头(或末尾)。

public static void selectionSort(int[] arr) { // 获取数组的长度 int n = arr.length; // 外层循环控制选择的轮数,一共需要进行n - 1轮选择 for (int i = 0; i < n - 1; i++) { // 假设当前索引i处的元素是最小的 int minIndex = i; // 内层循环从i + 1开始,在剩余元素中寻找最小元素的索引 for (int j = i + 1; j < n; j++) { // 如果找到比当前最小元素更小的元素,就更新最小元素的索引 if (arr[j] < arr[minIndex]) { minIndex = j; } } // 交换当前位置i的元素和找到的最小元素 int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } 七、二维数组的介绍

二维数组可以理解为 “数组的数组”,它类似于一个表格,具有行和列的结构。比如,当我们要记录一个小组学生的英语和数学成绩时,就可以使用二维数组。

二维数组的创建 // 直接初始化一个3行2列的二维数组,这里假设记录的是3个学生的英语和数学成绩 int[][] scores = { {80, 85}, // 第一个学生的英语80分,数学85分 {75, 78}, // 第二个学生的英语75分,数学78分 {90, 92} // 第三个学生的英语90分,数学92分 }; 二维数组元素的访问

访问二维数组中的元素需要使用两个索引。例如,scores[1][0]表示第二行第一列的元素,也就是第二个学生的英语成绩 75 分。

二维数组的遍历 // 外层循环控制行数,i代表行索引 for (int i = 0; i < scores.length; i++) { // 内层循环控制列数,j代表列索引 for (int j = 0; j < scores[i].length; j++) { // 输出每个学生的每门课程成绩 System.out.print("第" + (i + 1) + "个学生的第" + (j + 1) + "门成绩是:" + scores[i][j] + " "); } System.out.println(); }

通过以上内容的学习,相信你已经对 Java 数组有了初步的了解。数组在编程实践中应用十分广泛,建议你多进行实际操作练习,以便更好地理解和掌握数组的各种操作。要是在学习过程中遇到任何疑问,欢迎随时查阅更多相关资料,继续深入探索。

标签:

JavaSE:数组由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JavaSE:数组