目录
1. Java 数组简介
在 Java 中,数组(Array)是一种用于存储固定大小的相同类型元素的容器。数组是对象,因此可以动态分配内存,并使用索引访问每个元素。
特点:
- 数组的长度是固定的,创建后无法更改大小。
- 数组中的所有元素类型必须相同(基本数据类型或引用类型)。
- 通过索引(从
0
开始)访问数组元素。 - 数组的默认值:
int
、short
、byte
、long
→0
float
、double
→0.0
char
→'\u0000'
(空字符)boolean
→false
- 引用类型 →
null
2. 声明和初始化数组
2.1 声明数组
在 Java 中,数组可以使用以下两种方式声明:
数据类型[] 数组名; // 推荐方式
数据类型 数组名[]; // 兼容 C 语言风格
示例:
int[] numbers; // 推荐
int numbers[]; // 兼容 C 语言风格
2.2 初始化数组
数组必须在使用前进行初始化,有以下三种方式:
(1)静态初始化(直接赋值)
int[] numbers = {1, 2, 3, 4, 5}; // 创建并初始化
(2)动态初始化(指定大小,默认值填充)
int[] numbers = new int[5]; // 默认值:{0, 0, 0, 0, 0}
(3)同时声明和初始化
int[] numbers = new int[]{1, 2, 3, 4, 5}; // 直接初始化
⚠️注意:
int[] numbers;
numbers = {1, 2, 3, 4, 5}; // ❌ 错误:不能单独赋值
必须使用 new
关键字:
numbers = new int[]{1, 2, 3, 4, 5}; // ✅ 正确
3. 访问数组元素
数组元素通过索引(从 0
开始)访问:
int[] numbers = {10, 20, 30, 40, 50};
System.out.println(numbers[0]); // 输出:10
System.out.println(numbers[4]); // 输出:50
如果索引超出范围,会抛出 ArrayIndexOutOfBoundsException
:
System.out.println(numbers[5]); // ❌ 错误:超出范围
4. 多维数组
Java 支持多维数组(常见的是二维数组),声明方式:
int[][] matrix = new int[3][3]; // 3x3 矩阵
4.1 初始化多维数组
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
4.2 访问多维数组元素
System.out.println(matrix[1][2]); // 输出:6
5. 增强型 for 循环
Java 提供增强型 for
循环遍历数组:
int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {
System.out.println(num);
}
6. 数组的常见操作
6.1 复制数组
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, original.length);
6.2 查找数组元素
int index = Arrays.binarySearch(original, 2); // 找到 2 的索引
6.3 排序数组
Arrays.sort(original); // 升序排序
7. Arrays 类的使用
Java Arrays
类提供了许多数组操作方法:
import java.util.Arrays;
int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr); // 排序
System.out.println(Arrays.toString(arr)); // 输出:[1, 1, 3, 4, 5]
8. 数组与 ArrayList 对比
特性 | 数组(Array) | ArrayList |
---|---|---|
长度固定 | 是 | 否 |
线程安全 | 是 | 否 |
存储类型 | 基本类型 & 对象 | 仅对象 |
访问速度 | 快 | 较慢 |
9. 示例代码
示例 1:创建并遍历数组
public class ArrayExample {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {
System.out.println(num);
}
}
}
示例 2:二维数组
public class MultiDimArray {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(matrix[1][2]); // 输出:6
}
}
示例 3:使用 Arrays
类
import java.util.Arrays;
public class ArrayMethods {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 5, 8, 9]
}
}
发表回复