数组是 Java 中最基础的数据结构之一,用于存储相同类型的多个元素。
一、数组的基本概念
1.定义
数组是一个固定长度的容器,在创建时就确定大小,且只能存储同一数据类型的元素(包括基本类型和引用类型)。
2.特点
- 长度固定:一旦初始化,长度不能改变。
- 存储连续:在内存中占用一块连续的存储空间,访问效率高。
- 索引访问:通过下标(索引)访问元素,索引从 0 开始,最大索引为 length – 1。
- 默认值:数组创建后,元素会被自动赋予默认值(如 int 数组默认 0,boolean 数组默认 false,引用类型默认 null)。
二、数组的声明与初始化
1. 声明数组

2. 初始化
数组必须初始化后才能使用,初始化分为两种方式:
- 静态初始化(直接指定元素)

- 动态初始化

三、数组的常用操作
1. 访问与修改元素

2. 获取数组长度

3. 遍历数组
4. 数组的复制
- System.arraycopy():底层是 native 方法,效率高。

- Arrays.copyOf():更易用,会自动创建新数组。

四、多维数组
Java 中的多维数组本质是数组的数组,最常见的是二维数组。
1. 声明与初始化

2. 遍历二维数组

五、数组工具类
Arrays 提供了大量静态方法,简化数组操作:
1.排序
Arrays.sort(arr)(升序排序,基本类型用快速排序,对象用归并排序)。


2.查找
Arrays.binarySearch(arr, key)(需先排序,返回索引,未找到返回负数)。


3.填充
Arrays.fill(arr, value)(将数组所有元素设为 value)。


4.比较
Arrays.equals(arr1, arr2)(比较两个数组的元素是否完全相同)。


5.转字符串
Arrays.toString(arr)(将数组转为 [元素1, 元素2, …] 格式的字符串)。


六、数组的常见问题
1. 数组越界异常
当访问的索引小于 0 或大于等于 arr.length 时抛出,需确保索引在合法范围内。
2. 空指针异常
当数组引用为 null 时,尝试访问数组的 length 或元素会抛出此异常。
3. 数组长度不可变
若需要动态扩容,建议使用 ArrayList(底层基于数组实现,自动扩容)。


