Java 数组
数组是一种基本的数据结构,它是一个容器,可以持有固定数量的、相同类型的元素。数组的大小在创建时被确定,之后不能改变。
声明数组
声明一个数组变量并不会在内存中创建数组,它只是告诉编译器这个变量将引用一个特定类型的数组。
语法:
java
dataType[] arrayName; // 推荐的方式
// 或
dataType arrayName[]; // C/C++ 风格,但不推荐示例:
java
// 声明一个可以持有整数的数组
int[] scores;
// 声明一个可以持有字符串的数组
String[] names;创建和初始化数组
声明数组后,您需要使用 new 关键字来创建数组,并指定其大小。
1. 创建并指定大小
创建数组后,其元素会被自动初始化为默认值(数值为 0,布尔值为 false,引用类型为 null)。
java
// 创建一个可以存储 10 个整数的数组
int[] scores = new int[10];
// 创建一个可以存储 5 个字符串的数组
String[] names = new String[5];
// 访问元素并赋值
scores[0] = 95; // 数组索引从 0 开始
scores[1] = 88;
names[0] = "Alice";2. 创建并直接初始化
您可以在声明数组的同时,使用大括号 {} 提供初始值列表来创建和初始化数组。编译器会自动根据元素数量确定数组大小。
java
// 创建并初始化一个整数数组
int[] numbers = {10, 20, 30, 40, 50};
// 创建并初始化一个字符串数组
String[] fruits = {"Apple", "Banana", "Orange"};访问数组元素
您可以通过数组的索引 (index) 来访问或修改数组中的任何元素。数组的索引从 0 开始,最大索引是 数组长度 - 1。
java
int[] numbers = {10, 20, 30};
// 访问第一个元素 (索引为 0)
int firstNumber = numbers[0]; // firstNumber 的值是 10
// 修改第三个元素 (索引为 2)
numbers[2] = 35;
// 尝试访问不存在的索引会导致异常
// System.out.println(numbers[3]); // 这会抛出 ArrayIndexOutOfBoundsException数组的 length 属性
每个数组都有一个 length 属性(注意不是方法),它表示数组可以容纳的元素数量。
java
String[] cars = {"Volvo", "BMW", "Ford"};
System.out.println("数组的长度是: " + cars.length); // 输出: 3遍历数组
遍历数组是常见的操作,通常使用循环来完成。
使用 for 循环
java
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println("元素 " + i + ": " + numbers[i]);
}使用增强 for 循环 (For-Each)
这是更简洁、更推荐的遍历方式,它不易出错。
java
String[] fruits = {"Apple", "Banana", "Orange"};
for (String fruit : fruits) {
System.out.println(fruit);
}多维数组
Java 也支持多维数组,它们本质上是“数组的数组”。最常见的是二维数组,可以将其想象成一个表格或矩阵。
java
// 声明并初始化一个 3x4 的二维数组
int[][] matrix = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 访问第二行第三列的元素 (索引是 [1][2])
System.out.println(matrix[1][2]); // 输出: 7
// 遍历二维数组
for (int i = 0; i < matrix.length; i++) { // 遍历行
for (int j = 0; j < matrix[i].length; j++) { // 遍历列
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}java.util.Arrays 工具类
Java 提供了一个 Arrays 工具类,其中包含许多用于操作数组的静态方法。
Arrays.toString(array): 返回数组内容的字符串表示形式,非常适合打印数组。Arrays.sort(array): 对数组进行升序排序。Arrays.fill(array, value): 用指定的值填充数组的所有元素。Arrays.equals(array1, array2): 比较两个数组的内容是否完全相等。Arrays.binarySearch(array, key): 在一个已排序的数组中执行二分查找。
java
import java.util.Arrays;
public class ArraysUtilExample {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9};
// 打印数组
System.out.println("原始数组: " + Arrays.toString(numbers));
// 排序数组
Arrays.sort(numbers);
System.out.println("排序后数组: " + Arrays.toString(numbers));
// 查找元素
int index = Arrays.binarySearch(numbers, 8);
System.out.println("元素 8 的索引是: " + index);
}
}