一、什么是copyOf方法
copyOf方法是Java中Arrays类中的一个静态方法,它可以将原始数组src的部分或全部拷贝到一个新的数组中。
该方法有两个参数:第一个参数是原始数组,第二个参数是需要拷贝的元素个数。如果需要拷贝的元素个数大于原始数组长度,则新数组的长度就是拷贝元素个数;如果不超过原始数组长度,则新数组的长度就是拷贝元素个数。
二、copyOf方法的使用方法
copyOf方法的语法如下:
public static T[] copyOf(T[] original, int newLength)
参数说明:
- original:原始数组。
- newLength:需要拷贝的元素个数。
返回值:拷贝后的新数组。
使用示例:
String[] array1 = {"apple", "banana", "orange", "pear"}; String[] array2 = Arrays.copyOf(array1, 3); System.out.println(Arrays.toString(array2)); // 输出:[apple, banana, orange]
上述代码中,array1是原始数组,array2是拷贝后的新数组,执行Arrays.copyOf(array1, 3)表示将array1中前3个元素拷贝到新数组中,所以输出是[apple, banana, orange]。
三、copyOf方法的特点
1、指定长度拷贝
copyOf方法可以根据第二个参数指定需要拷贝的元素个数,该特点非常适用于数组长度预估不准的情况,可以根据需要灵活指定。
示例代码:
int[] array1 = {1, 2, 3, 4, 5}; int[] array2 = Arrays.copyOf(array1, 3); int[] array3 = Arrays.copyOf(array1, 7); System.out.println(Arrays.toString(array2)); // 输出:[1, 2, 3] System.out.println(Arrays.toString(array3)); // 输出:[1, 2, 3, 4, 5, 0, 0]
上述代码中,array1是原始数组,数组长度为5,array2是拷贝后的新数组,长度为3,array3是拷贝后的新数组,长度为7。数组array2只拷贝array1的前3个元素,所以输出为[1, 2, 3],数组array3拷贝了array1的所有元素,并填充了2个默认值0,所以输出为[1, 2, 3, 4, 5, 0, 0]。
2、支持不同类型数组拷贝
copyOf方法可以拷贝不同类型的数组,比如将一个整型数组拷贝到一个长整型数组中。
示例代码:
int[] array1 = {1, 2, 3, 4, 5}; long[] array2 = Arrays.copyOf(array1, 5, long[].class); System.out.println(Arrays.toString(array2)); // 输出:[1, 2, 3, 4, 5]
上述代码中,array1是原始数组,长度为5,数组元素类型为int,array2是拷贝后的新数组,长度为5,数组元素类型为long。
3、填充默认值
如果需要拷贝的元素个数大于原始数组长度,copyOf方法会自动填充默认值,如0、false、null等。
示例代码:
int[] array1 = {1, 2, 3, 4, 5}; int[] array2 = Arrays.copyOf(array1, 7); System.out.println(Arrays.toString(array2)); // 输出:[1, 2, 3, 4, 5, 0, 0]
上述代码中,array1是原始数组,长度为5,array2是拷贝后的新数组,长度为7。由于需要拷贝的元素个数大于原始数组长度,所以自动填充了2个默认值0,所以输出为[1, 2, 3, 4, 5, 0, 0]。
四、copyOf方法的注意事项
- 需要拷贝的元素个数必须大于等于0。
- 原始数组不能为null。
- 如果需要拷贝的元素个数超过原始数组长度,会自动填充默认值。
- 如果需要拷贝的元素个数不超过原始数组长度,新数组的长度就是拷贝元素个数。
- 如果需要拷贝的元素个数大于原始数组长度,新数组的长度就是拷贝元素个数。
- 拷贝后的新数组与原始数组的元素类型相同。
- 如果需要拷贝的是基本数据类型数组,则无法转换为Object[],需要使用对应的包装类例如Integer[]、Long[]等。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/308609.html