文章目录
- 前言
- 什么是数组
- 初始化数组
- 如何访问和操作数组
- 遍历数组
- 多维数组
- 数组的常见操作
- 复制数组
- 排序数组
- 搜索数组
- 数组的长度和异常处理
- `Arrays` 工具类
- 本期小知识
“简单是效率的灵魂。”
前言
这里是分享 Java 相关内容的专刊,每日一更。
本期将为大家带来以下内容:
- 什么是数组
- 初始化数组
- 如何访问和操作数组
- 遍历数组
- 多维数组
- 数组的常见操作
- 数组的长度和异常处理
- Arrays 工具类
什么是数组
数组,简单来说,就是一个能存放多个 相同类型数据 的“容器”。不论是数字、字符、还是对象,只要是同一类型的数据,数组都能把它们整齐地存放在一起。每个数据都有一个位置编号(索引),这样我们就可以快速找到它们。例如:
int[] numbers = new int[5]; // 创建一个可以存放5个整数的数组
这段代码就像是在告诉 Java:“请给我一个带有 5 个格子的柜子,这里面我要放整数。”
初始化数组
在 Java 中,数组的初始化有两种主要方式:
静态初始化:你直接把数据塞进去。
int[] numbers = {1, 2, 3, 4, 5}; // 创建并初始化数组
动态初始化:你先把柜子建好,再慢慢往里放东西。
int[] numbers = new int[5]; // 创建一个空的数组
numbers[0] = 1; // 把第一个格子填上数字1
如何访问和操作数组
就像在柜子里找东西一样,你可以通过索引来获取或修改数组中的某个元素。索引从 0
开始,这点很重要!
获取数组元素:
int firstNumber = numbers[0]; // 获取第一个格子的内容
修改数组元素:
numbers[2] = 10; // 把第三个格子的内容改成10
遍历数组
想一次性看看所有的东西?可以用循环来“逛”数组。
使用 for
循环:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]); // 打印每个格子的内容
}
使用 foreach
循环:
for (int number : numbers) {
System.out.println(number); // 依次打印每个格子的内容
}
多维数组
有时候,一个柜子不够用,我们需要多个柜子来存储更复杂的数据。这时候,多维数组就派上用场了。最常见的是二维数组,它就像是一个装满格子的表格。
创建二维数组:
int[][] matrix = new int[3][3]; // 创建一个3x3的矩阵
访问二维数组:
matrix[0][1] = 5; // 把第一行第二列的值设为5
想象一下你有一个 3x3 的表格,每个格子都可以放一个数字。这个“表格”就是二维数组。
数组的常见操作
数组不仅能存储数据,还能进行一些常见操作。
复制数组
你可以使用 System.arraycopy()
或 Arrays.copyOf()
来复制数组。
int[] newArray = Arrays.copyOf(numbers, numbers.length);
排序数组
想把数组的内容按顺序排好?Arrays.sort()
可以帮你。
Arrays.sort(numbers); // 把数组中的数字从小到大排列
搜索数组
找某个数字的位置?Arrays.binarySearch()
是个好工具,但前提是数组得是排好序的。
int index = Arrays.binarySearch(numbers, 3); // 查找数字3的索引
数组的长度和异常处理
每个数组都有一个固定的长度,也就是它有多少个格子,这个长度是通过 length
属性获取的。
int len = numbers.length; // 获取数组的长度
但你得小心访问数组时的索引,超出了数组的大小,就会抛出 ArrayIndexOutOfBoundsException
错误。这就像你试图打开一个不存在的柜子,会被告知“没有这个柜子!”
Arrays
工具类
Java 提供了一个非常实用的工具类 java.util.Arrays
,它可以帮我们轻松地处理数组。
Arrays.toString()
:将数组转换成一个字符串,方便我们查看。
System.out.println(Arrays.toString(numbers)); // 输出:[1, 2, 3, 4, 5]
Arrays.equals()
:用来比较两个数组是否相等。
Arrays.fill()
:可以将数组中的所有元素设置成相同的值。
Arrays.fill(numbers, 0); // 把所有格子的值都设为0
本期小知识
在 Java 中,数组是对象,不论它存储的是基本数据类型还是引用类型。因此,数组具有所有对象的特性,包括默认继承自 Object
类的方法。
这意味着数组可以调用 Object
类的方法,如 toString()
、hashCode()
,但由于 toString()
没有被数组重写,它返回的结果是数组对象的内存地址,这就是为什么通常使用 Arrays.toString()
来打印数组内容的原因。