Java 数组:从入门到精通
·
1. 什么是数组?
数组是 Java 中最基础、最常用的数据结构之一,用于存储固定大小的相同类型元素的集合。数组在内存中是连续存储的,可以通过索引(从 0 开始)快速访问任意元素。
2. 数组的声明与初始化
2.1 声明数组
Java 数组的声明有两种常见语法:
// 方式一:类型[] 数组名;
int[] numbers;
String[] names;
// 方式二:类型 数组名[];
int numbers[];
String names[];
推荐使用第一种方式,因为类型与方括号结合更清晰,表明“int 数组”类型。
2.2 初始化数组
数组初始化分为静态初始化和动态初始化:
// 静态初始化:声明时直接赋值
int[] scores = {90, 85, 78, 92, 88};
String[] fruits = {"Apple", "Banana", "Orange"};
// 动态初始化:先指定长度,后赋值
int[] arr = new int[5]; // 创建长度为 5 的 int 数组,默认值全为 0
arr[0] = 10;
arr[1] = 20;
3. 数组的基本操作
3.1 访问与修改元素
int[] nums = {10, 20, 30, 40, 50};
// 访问元素
int first = nums[0]; // 10
int third = nums[2]; // 30
// 修改元素
nums[1] = 25; // 将第二个元素改为 25
System.out.println(nums[1]); // 输出 25
3.2 获取数组长度
使用 length 属性(注意不是方法):
int[] arr = {1, 2, 3, 4, 5};
int len = arr.length; // 5
3.3 遍历数组
常用的遍历方式有三种:
int[] arr = {10, 20, 30};
// 1. for 循环(最常用)
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 2. for-each 循环(Java 5+)
for (int num : arr) {
System.out.println(num);
}
// 3. while 循环
int i = 0;
while (i < arr.length) {
System.out.println(arr[i]);
i++;
}
4. 多维数组
Java 支持多维数组,最常见的是二维数组(可以理解为数组的数组)。
// 声明并初始化二维数组
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 访问元素
int value = matrix[1][2]; // 6(第二行第三列)
// 遍历二维数组
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
5. 数组的常用工具类
5.1 Arrays 类
java.util.Arrays 提供了丰富的数组操作方法:
import java.util.Arrays;
int[] arr = {5, 2, 8, 1, 9};
// 排序
Arrays.sort(arr); // [1, 2, 5, 8, 9]
// 二分查找(数组必须先排序)
int index = Arrays.binarySearch(arr, 5); // 2
// 数组转字符串
String str = Arrays.toString(arr); // "[1, 2, 5, 8, 9]"
// 填充数组
Arrays.fill(arr, 0); // 所有元素变为 0
// 数组复制
int[] copy = Arrays.copyOf(arr, arr.length);
5.2 System.arraycopy()
用于高效地复制数组:
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);
6. 数组的注意事项
- 固定长度:数组一旦创建,长度不可改变。
- 索引越界:访问不存在的索引会抛出
ArrayIndexOutOfBoundsException。 - 默认值:数值类型数组默认值为 0,布尔类型为 false,引用类型为 null。
- 内存连续:数组元素在内存中连续存储,访问效率高,但插入/删除效率低。
- 与集合的区别:数组长度固定,而
ArrayList等集合可以动态扩容。
7. 实战示例:计算数组平均值
public class ArrayAverage {
public static void main(String[] args) {
int[] numbers = {85, 90, 78, 92, 88};
int sum = 0;
for (int num : numbers) {
sum += num;
}
double average = (double) sum / numbers.length;
System.out.println("平均分:" + average); // 86.6
}
}
8. 总结
数组是 Java 编程的基石,掌握数组的声明、初始化、遍历和常用操作是每个 Java 开发者的必备技能。虽然数组长度固定,但在已知数据量或对性能要求高的场景下,数组仍然是首选数据结构。对于需要动态扩容的场景,可以考虑使用 ArrayList 等集合类。
更多推荐



所有评论(0)