上一篇                     
               
			  如何扩充Java数组?
- 后端开发
- 2025-06-15
- 3452
 Java数组长度固定,无法直接扩充,需创建新数组并复制原数据:使用
 
 
Arrays.copyOf()或
 System.arraycopy()手动复制元素,或改用
 ArrayList动态扩容(自动处理)。
方法1:手动创建新数组(基础方法)
// 原数组
int[] oldArray = {1, 2, 3};
int newSize = 5; // 目标长度
// 创建新数组
int[] newArray = new int[newSize];
// 复制原数据
for (int i = 0; i < oldArray.length; i++) {
    newArray[i] = oldArray[i];
}
// 此时newArray = {1, 2, 3, 0, 0} 
适用场景:简单小数组操作,适合教学演示。
方法2:Arrays.copyOf()(官方推荐)
import java.util.Arrays;
int[] oldArray = {1, 2, 3};
int newSize = 5;
// 自动复制并填充默认值
int[] newArray = Arrays.copyOf(oldArray, newSize); 
// 结果:{1, 2, 3, 0, 0} 
优势:

- 代码简洁(一行实现)
- 底层调用System.arraycopy(),性能高效
- 自动填充默认值(如0、null)
方法3:System.arraycopy()(底层高性能)
int[] oldArray = {1, 2, 3};
int newSize = 5;
int[] newArray = new int[newSize];
// 参数说明:(原数组, 原起始位置, 目标数组, 目标起始位置, 复制的长度)
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
// 结果:{1, 2, 3, 0, 0} 
适用场景:
- 大型数组操作(性能最优)
- 需要控制复制位置时(如部分复制)
方法4:改用ArrayList(动态扩容首选)
import java.util.ArrayList; // 创建ArrayList并添加数据 ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); // 自动扩容添加新元素 list.add(4); // 无需手动处理扩容 // 转回数组(可选) Integer[] array = list.toArray(new Integer[0]);
核心优势:

- 自动管理容量(默认扩容1.5倍)
- 提供丰富的API(add(),remove(),get())
- 避免手动复制代码
方案对比与选型建议
| 方法 | 性能 | 易用性 | 适用场景 | 
|---|---|---|---|
| 手动创建 | 低 | 复杂 | 学习原理 | 
| Arrays.copyOf() | 高 | 简单 | 快速小规模扩容 | 
| System.arraycopy | 最高 | 中等 | 大型数据或精确控制复制过程 | 
| ArrayList | 中等 | 最简单 | 频繁增删元素的动态数据 | 
最佳实践:
- 少量数据扩容 → 用
Arrays.copyOf()- 高性能需求 →
System.arraycopy()- 频繁增删元素 → 优先选择
ArrayList
引用说明
- Oracle官方文档:Arrays (Java SE 17)
- Oracle官方文档:ArrayList (Java SE 17)
- Java语言规范:数组存储机制
通过合理选择上述方法,可高效解决Java数组扩容问题,对于生产环境,推荐优先使用ArrayList或Arrays.copyOf()以保障代码健壮性。

 
  
			 
			 
			 
			 
			 
			 
			