数组是Java中一种非常基础且常用的数据结构,它可以存储多个相同类型的数据。想象一下,数组就像一个“容器”,里面装着多个元素,每个元素都有一个唯一的“位置编号”,我们可以通过这个编号快速找到对应的元素。
一、数组的定义¶
在Java中,定义数组需要先声明数组变量,并为其分配存储空间。数组的声明和初始化有几种常见方式:
1. 声明数组变量¶
数组变量的声明格式为:
数据类型[] 数组名; (推荐这种写法,也可以写成数据类型 数组名[];,但前者更清晰)
例如:
int[] scores; // 声明一个int类型的数组变量scores
String[] names; // 声明一个String类型的数组变量names
2. 分配空间并初始化¶
声明数组后,需要为其分配存储空间(即确定数组的长度),并可以选择初始化元素。
(1)动态初始化(先指定长度,再赋值)¶
先指定数组长度,再给每个元素赋值:
// 声明并动态初始化一个长度为5的int数组
int[] numbers = new int[5];
// 给数组元素赋值(索引从0开始)
numbers[0] = 10; // 第一个元素
numbers[1] = 20; // 第二个元素
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
这里要注意:数组长度一旦确定就不能改变,numbers.length会返回数组的长度(即5)。
(2)静态初始化(直接赋值元素,无需指定长度)¶
直接给出数组的元素值,编译器会自动推断长度:
// 声明并静态初始化一个int数组
int[] ages = {18, 20, 22, 25};
// 等价写法(显式初始化)
int[] heights = new int[]{170, 175, 180};
注意:静态初始化时不能同时指定长度和元素值,以下写法是错误的:
int[] arr = new int[3]{1,2,3}; (会报错,必须省略长度或直接赋值)
二、数组的遍历¶
遍历数组是指“逐个访问数组中的每个元素”,最常用的方式有两种:
1. for循环遍历(索引遍历)¶
通过数组的索引(从0开始)和for循环逐个访问元素:
int[] arr = {1, 2, 3, 4, 5};
// 遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + (i+1) + "个元素:" + arr[i]);
}
arr.length:数组的长度属性(注意是属性,无括号),用于控制循环次数。- 索引越界问题:数组索引范围是
0 ~ length-1,若访问arr[length]会抛出ArrayIndexOutOfBoundsException(数组越界异常)。
2. 增强for循环(for-each循环,无需索引)¶
更简洁的遍历方式,直接取出数组中的每个元素值:
int[] arr = {1, 2, 3, 4, 5};
for (int num : arr) { // num是临时变量,依次代表数组中的每个元素
System.out.println(num);
}
- 适用场景:只需要访问元素值,不需要修改索引时使用。
三、常见注意事项¶
- 数组类型必须一致:数组中所有元素的数据类型必须相同,例如
int[]数组不能存储字符串。 - 索引从0开始:第一个元素的索引是0,不是1,这是初学者最容易犯错的地方。
- 数组长度不可变:一旦初始化,数组的长度就固定了,无法中途添加或删除元素。
- 避免空指针异常:未初始化的数组变量(如
int[] arr;)直接使用会报错,必须先初始化(分配空间)。
四、完整示例代码¶
public class ArrayDemo {
public static void main(String[] args) {
// 1. 定义并初始化数组
int[] scores = new int[3]; // 动态初始化长度为3的数组
scores[0] = 90; // 赋值第一个元素
scores[1] = 85;
scores[2] = 95;
// 2. 静态初始化数组
String[] names = {"张三", "李四", "王五"};
// 3. 遍历scores数组(for循环)
System.out.println("scores数组遍历结果:");
for (int i = 0; i < scores.length; i++) {
System.out.println("scores[" + i + "] = " + scores[i]);
}
// 4. 遍历names数组(增强for循环)
System.out.println("\nnames数组遍历结果:");
for (String name : names) {
System.out.println(name);
}
}
}
通过以上内容,你应该已经掌握了Java数组的基本定义、初始化和遍历方法。数组是编程中处理批量数据的核心工具,熟练掌握数组操作能帮助你更高效地解决问题。接下来可以尝试自己写一些简单的数组练习,比如计算数组元素的和、查找最大值等,巩固所学知识。