一、数组的基础定义
1. 本质
数组是相同类型数据的有序集合,每个元素通过「索引(下标)」访问,索引从 0 开始。
2. 核心特点
- 长度固定:数组一旦创建,长度不可修改;
- 类型统一:所有元素必须是同一数据类型(int/double/String 等);
- 索引范围:合法索引为
0 ~ 数组.length - 1(如长度为 4 的数组,索引是 0/1/2/3)。
二、数组的完整操作流程
表格
| 步骤 | 语法示例 | 说明 |
|---|---|---|
| 声明 | int[] arr; | 定义数组引用,未分配内存 |
| 创建 | arr = new int[4]; | 分配内存,元素默认值(int 默认 0) |
| 赋值 | arr[0] = 15; arr[1] = 91; | 通过下标为元素赋值 |
| 访问 | System.out.println(arr[2]); | 通过下标读取元素值 |
✅ 简化写法(声明 + 创建 + 赋值一步完成):
java
运行
int[] arr = {15, 91, 47, 62}; // 最常用的快捷方式
三、数组的三种遍历方式(核心重点)
表格
| 遍历方式 | 代码示例 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 逐个输出 | System.out.println(arr[0]);``System.out.println(arr[1]); | 直观易懂 | 代码冗余、不灵活 | 极短数组 / 教学演示 |
| 普通 for 循环 | for (int i = 0; i < arr.length; i++) {``System.out.println(arr[i]);``} | 可操作下标、灵活 | 需手动管理索引,易越界 | 需要修改元素 / 操作下标 |
| 增强 for 循环(for-each) | for (int num : arr) {``System.out.println(num);``} | 简洁、不易出错 | 无法获取下标、仅能读取 | 仅需遍历读取元素 |
四、常见错误与避坑
1. 数组索引越界异常
- 错误提示:
java.lang.ArrayIndexOutOfBoundsException - 原因:访问了超出
0 ~ 数组.length - 1范围的索引(如长度 4 的数组访问 arr [4]); - 解决:用
arr.length代替固定数字,确保索引不越界。
2. 新手易错点
- 混淆索引:误以为索引从 1 开始(如把 arr [4] 当成第 4 个元素);
- 长度误用:把
arr.length当成最大索引(正确是arr.length - 1)。
五、完整示例代码(可直接运行)
java
运行
public class ArrayDemo {
public static void main(String[] args) {
// 1. 声明+创建+赋值
int[] arr = {15, 91, 47, 62};
// 2. 遍历方式1:逐个输出
System.out.println("=== 逐个输出 ===");
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
// 3. 遍历方式2:普通for循环
System.out.println("\n=== 普通for循环 ===");
for (int i = 0; i < arr.length; i++) {
System.out.println("索引" + i + ":" + arr[i]);
}
// 4. 遍历方式3:增强for循环
System.out.println("\n=== 增强for循环 ===");
for (int num : arr) {
System.out.println(num);
}
}
}
总结
- 数组核心规则:长度固定、索引从 0 开始、类型统一,牢记
0 ~ arr.length - 1的索引范围; - 遍历选择:需操作下标用普通 for 循环,仅读取元素用增强 for 循环,避免逐个输出的冗余写法;
- 避坑关键:用
arr.length代替固定数字,从根源避免索引越界异常。