登录
首页 >  文章 >  java教程

Java中Arrays.copy与copyOfRange区别详解

时间:2025-11-27 18:32:29 181浏览 收藏

在Java中,`Arrays.copyOf`和`Arrays.copyOfRange`是两个强大的数组复制工具,它们定义在`java.util.Arrays`类中,相较于手动实现,更简洁高效。`Arrays.copyOf`用于复制整个数组,并允许调整新数组的长度,超出原数组长度的部分将以默认值填充,短于原数组则会截断。而`Arrays.copyOfRange`则专注于复制数组的指定范围,从起始索引(包含)到结束索引(不包含),方便提取子数组。本文将深入解析这两个方法的用法、示例,以及它们对基本类型和对象数组的支持,助你掌握这两个实用技巧,避免索引边界和自动填充规则等细节问题,提升Java数组操作的效率和安全性。

Arrays.copyOf复制整个数组并可调整长度,若新长度大于原数组则用默认值填充,小于则截断;Arrays.copyOfRange复制指定范围的子数组,包含起始索引到结束索引前一位,适用于提取部分元素。两者均支持基本类型和对象数组,使用便捷且安全。

在Java中如何使用Arrays.copyOf与copyOfRange复制数组_Arrays copy操作技巧

在Java中,Arrays.copyOfArrays.copyOfRange 是两个非常实用的数组复制工具方法,它们都定义在 java.util.Arrays 类中。相比手动遍历或使用 System.arraycopy,这两个方法更简洁、安全且易于理解。

Arrays.copyOf:复制数组并可调整长度

Arrays.copyOf 用于复制整个数组,同时允许指定新数组的长度。如果新长度大于原数组,剩余位置会用默认值填充(如0、null、false等);如果小于,则截断。

方法签名如下:

public static T[] copyOf(T[] original, int newLength)

示例:

  • 复制整数数组并扩展长度
int[] arr = {1, 2, 3}; int[] newArr = Arrays.copyOf(arr, 5); // 结果:[1, 2, 3, 0, 0]
  • 复制字符串数组并缩短
String[] words = {"a", "b", "c", "d"}; String[] shorter = Arrays.copyOf(words, 2); // 结果:["a", "b"]

Arrays.copyOfRange:复制数组的指定范围

Arrays.copyOfRange 可以复制数组的一部分,从指定的起始索引(包含)到结束索引(不包含),适用于需要提取子数组的场景。

方法签名:

public static T[] copyOfRange(T[] original, int from, int to)

示例:

  • 提取部分元素
int[] data = {10, 20, 30, 40, 50}; int[] part = Arrays.copyOfRange(data, 1, 4); // 结果:[20, 30, 40]
  • 复制到最后
int[] tail = Arrays.copyOfRange(data, 2, data.length); // 结果:[30, 40, 50]

基本类型也支持

除了对象数组,Arrays 类为每种基本类型都提供了对应的重载方法,如 copyOf(int[], int)copyOf(double[], int)copyOfRange(char[], int, int) 等,使用方式一致。

例如:

double[] values = {1.1, 2.2, 3.3}; double[] dup = Arrays.copyOf(values, 3);

基本上就这些。只要记得 copyOf 复制全部并可变长,copyOfRange 截取片段,就能灵活应对大多数数组复制需求。不复杂但容易忽略细节,比如索引边界和自动填充规则。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Java中Arrays.copy与copyOfRange区别详解》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>