Arrays.copyOf 是 Java 中高效复制数组的方法,底层调用 System.arraycopy,支持基本类型和引用类型;可指定新长度,自动填充默认值或截断,但仅浅拷贝且不支持多维数组深复制。
Arrays.copyOf 是 Java 中快速复制数组的常用方法,它能创建新数组并拷贝指定长度的元素,支持基本类型和引用类型,底层调用 System.arraycopy,效率高且代码简洁。
该方法有两个核心参数:原数组和目标长度。若新长度大于原数组长度,多出位置用默认值填充(如 0、false、null);若小于,则只取前 N 个元素。
int[] src = {1, 2, 3};int[] dst1 = Arrays.copyOf(src, 5); // → {1, 2, 3, 0, 0}int[] dst2 = Arrays.copyOf(src, 2); // → {1, 2}方法是泛型的(<T> T[] copyOf(T[] original, int newLength)),可直接用于字符串、自定义对象等引用类型数组,无需强制类型转换。
String[] s1 = {"a", "b", "c"};String[] s2 = Arrays.copyOf(s1, 4); // → {"a", "b", "c", null}如果只需复制中间某段(如索引 1 到 3),用 copyOfRange 更合适;而 copyOf 总是从索引 0 开始复制。
立即学习“Java免费学习笔记(深入)”;
Arrays.copyOf(arr, len) ≡ Arrays.copyOfRange(arr, 0, len)
传入 null 会抛 NullPointerException;长度为负数则抛 NegativeArraySizeException。生产环境中建议先校验参数。
copyOf 只复制第一层引用。