Skip to content

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);
    }
}

本站内容仅供学习和研究使用。