copyOfRange函数将数组的子集复制到新数组中?
copyOfRange函数是Java中java.util.Arrays类提供的一个方法,用于将源数组的指定范围内的元素复制到一个新数组中。该方法有三个参数:原数组(original)、起始索引(from)和结束索引(to)。起始索引是包含在复制范围内的元素,而结束索引则不包含在复制范围内的元素。
首先,copyOfRange方法会验证输入参数。如果起始索引小于0,则会抛出一个NegativeArraySizeException异常。如果起始索引大于结束索引,则会抛出一个IllegalArgumentException异常。如果结束索引超出了原数组的长度,那么复制范围将被限制为原数组的长度。
然后,copyOfRange方法会计算需要复制的元素数量,并创建一个新的目标数组(newArray),长度等于复制的元素数量。接下来,copyOfRange方法会使用System.arraycopy方法来将原数组的指定范围内的元素复制到目标数组中。
System.arraycopy是Java中的一个本地方法,用于在内存中复制数组。它有五个参数:源数组(src)、源数组的起始位置(srcPos)、目标数组(dest)、目标数组的起始位置(destPos)和复制的元素数量(length)。System.arraycopy方法将从源数组的起始位置开始,复制指定数量的元素到目标数组的起始位置。
最后,copyOfRange方法返回新的目标数组。
使用copyOfRange方法可以方便地复制原数组的子集到一个新数组中。例如,假设我们有一个包含10个元素的整数数组arr,我们想要复制索引为2到索引为6的元素到一个新数组。我们可以使用以下代码完成这个操作:
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] newArr = Arrays.copyOfRange(arr, 2, 7);
// 输出新数组的元素
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i] + " ");
}
运行以上代码,将会输出:
3 4 5 6 7
从输出结果可以看出,新数组newArr包含了原数组arr中索引为2到6的元素。
总之,copyOfRange方法是一个便捷的函数,可以将原数组的指定范围内的元素复制到一个新数组中。它提供了一种简单快捷的方式,避免了手动创建新数组并循环复制元素的麻烦。通过使用copyOfRange方法,我们可以更加方便地操作数组。
