一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java 中怎样使用 Arrays.copyOf 复制数组

时间:2026-07-07 09:52:46 编辑:袖梨 来源:一聚教程网

Arrays.copyOf 是 Java 中高效复制数组的方法,底层调用 System.arraycopy,支持基本类型和引用类型;可指定新长度,自动填充默认值或截断,但仅浅拷贝且不支持多维数组深复制。

Arrays.copyOf 是 Java 中快速复制数组的常用方法,它能创建新数组并拷贝指定长度的元素,支持基本类型和引用类型,底层调用 System.arraycopy,效率高且代码简洁。

基本用法:复制全部或前 N 个元素

该方法有两个核心参数:原数组和目标长度。若新长度大于原数组长度,多出位置用默认值填充(如 0falsenull);若小于,则只取前 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}
  • 注意:复制的是引用,不是对象本身——即浅拷贝。

与 Arrays.copyOfRange 的区别

如果只需复制中间某段(如索引 1 到 3),用 copyOfRange 更合适;而 copyOf 总是从索引 0 开始复制。

立即学习“Java免费学习笔记(深入)”;

  • Arrays.copyOf(arr, len)Arrays.copyOfRange(arr, 0, len)
  • 但后者更明确意图,尤其在需要偏移时不可替代。

注意事项

传入 null 会抛 NullPointerException;长度为负数则抛 NegativeArraySizeException。生产环境中建议先校验参数。

  • 不支持多维数组的“深复制”,二维数组用 copyOf 只复制第一层引用。
  • 若需深拷贝对象数组,应结合序列化或手动遍历克隆。

热门栏目