Arrays.copyOf 是 Java 中用于从索引 0 开始复制数组并指定新长度的方法:newLength ≤ 原长则截取前 newLength 个元素,> 原长则补默认值(如 int 补 0、引用类型补 null),不修改原数组。

Arrays.copyOf 是 Java 中快速复制数组并指定新数组长度的常用方法,它会返回一个新数组,原数组不受影响。
基本用法:按目标长度截取或扩容
该方法会根据传入的 newLength 参数决定行为:
- 如果 newLength ≤ 原数组长度,就复制前
newLength个元素(相当于截断); - 如果 newLength > 原数组长度,就复制全部元素,后面用默认值填充(如 int 填 0,引用类型填 null)。
语法与参数说明
方法签名如下:
或针对基本类型(如 int):
立即学习“Java免费学习笔记(深入)”;
public static int[] copyOf(int[] original, int newLength)注意:
- 第一个参数是原数组(可为 null,但会抛出 NullPointerException);
- 第二个参数是新数组期望长度,必须 ≥ 0,否则抛 NegativeArraySizeException。
常见使用示例
以 int 数组为例:
int[] arr = {1, 2, 3, 4, 5};
int[] shorter = Arrays.copyOf(arr, 3); // {1, 2, 3}
int[] longer = Arrays.copyOf(arr, 8); // {1, 2, 3, 4, 5, 0, 0, 0}
String[] strs = {"a", "b"};
String[] extended = Arrays.copyOf(strs, 4); // {"a", "b", null, null}和 Arrays.copyOfRange 的区别
如果你需要复制**中间某一段**(比如下标 2 到 5),应选 copyOfRange;
而 copyOf 总是从索引 0 开始复制,只控制总长度,不支持偏移起始位置。


















