当前位置: 首页 > news >正文

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

相关文章:

  • Pygame中自定义事件处理的方法2-2
  • Linux-文件IO
  • 蓝桥杯篇---8位 ADC/DAC转换芯片 PCF8591
  • AtCoder Beginner Contest 393 —— E - GCD of Subset 补题 + 题解 python
  • 2025-02-16 学习记录--C/C++-PTA 7-21 求特殊方程的正整数解
  • 【css】超过文本显示省略号
  • nodejs:express + js-mdict 网页查询英汉词典,能显示图片
  • 线程池有哪几种状态?
  • AI与SEO协同:智能关键词挖掘与精准部署策略
  • 以若依移动端版为基础,实现uniapp的flowable流程管理
  • 【Spring Boot】SpringBoot自动装配-Import
  • TestHubo简介与安装
  • 让编程变成一种享受-明基RD320U显示器
  • 【中间件】Pulsar集群安装
  • 神经网络新手入门(4)Transformer的创世纪(2017)
  • 0x02递推与递归
  • HTML5 起步
  • SMU Winter 2025 div1 3rd
  • JavaScript严格模式
  • NCHAR_CS和CHAR_CS,导致UNION ALL 时,提示SQL 错误 [12704] [72000]: ORA-12704: 字符集不匹配
  • 2025全球城市科技传播能力指数出炉,上海位列第六
  • 光速晋级!2025年多哈世乒赛孙颖莎4比0战胜对手
  • 光明日报社副总编辑薄洁萍调任求是杂志社副总编辑
  • 信俗与共:清代新疆回疆儒释道庙宇的中华政教
  • 高瓴、景林旗下公司美股持仓揭晓:双双增持中概股
  • 一条铺过11年时光的科学红毯,丈量上海科创的“长宽高”