贝利信息

在Java中数组如何定义和使用_Java数组基础语法解析

日期:2026-01-10 00:00 / 作者:P粉602998670
Java数组是引用类型,声明需明确元素类型和维数,推荐写法为int[] array;初始化分静态(如int[] arr = {1,2,3})和动态(如int[] arr = new int[5])两种;访问越界抛ArrayIndexOutOfBoundsException。

Java中数组的声明与初始化必须区分类型和维度

Java数组不是基本类型,而是引用类型,声明时必须明确元素类型和维数。常见错误是把声明写成 int array[] = new int[5]; 就以为可以省略类型——其实这只是语法糖,int[] array 才是推荐写法,语义更清晰,也避免在声明多个变量时出错(比如 int[] a, b;b 是数组,而 int a[], b;bint)。

初始化分静态和动态两种:

访问数组元素时越界会抛出 ArrayIndexOutOfBoundsException

Java数组下

标从 0 开始,最大合法索引是 length - 1。这个异常是 RuntimeException,编译器不强制捕获,但运行时一旦触发程序立即中断。常见踩坑点:

安全做法是始终校验索引范围,尤其在接收外部输入或计算索引时:

if (index >= 0 && index < arr.length) {
    return arr[index];
} else {
    throw new IllegalArgumentException("Index " + index + " out of bounds for length " + arr.length);
}

数组长度固定且不可变,需要扩容请改用 ArrayList

Java数组创建后 length 字段就不可修改,试图“添加”元素只会导致编译失败或运行时异常。例如:

如果业务逻辑需要动态增删元素,应直接使用 ArrayListnew ArrayList()。它底层仍用数组实现,但封装了自动扩容(默认1.5倍)、元素移动等细节。注意:原始类型数组(如 int[])无法直接转为 ArrayList,需手动装箱或用 Arrays.stream(arr).boxed().collect(Collectors.toList())

多维数组本质是“数组的数组”,每行长度可不一致

Java没有真正意义上的多维数组,int[][] matrix 实际是 int[] 类型的一维数组,每个元素又是一个 int[]。这意味着:

遍历二维数组时,别假设所有行等长:

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) { // 必须用 matrix[i].length
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}

数组的 length 字段、越界检查机制、以及“数组即对象”的设计,决定了它轻量但僵硬。实际开发中,多数需要动态操作的场景,应该跳过手动管理数组,直接选用集合类。