Java:复制非基元类型的数组

Java:复制非基元类型的数组,java,arrays,copy,Java,Arrays,Copy,在Java中,复制非primitve类型数组的首选方法是什么?性能问题如何 System.arraycopy (这使您能够通过偏移量和长度参数复制数组的任意部分)。或 它添加到JDK 6中,是一种通用方法,因此可以使用: Integer[] is = new Integer[] { 4, 6 } Integer[] copy = Arrays.copyOf(is, is.length); 或者它可以缩小类型: Number[] is = new Number[]{4, 5}; Integer

在Java中,复制非primitve类型数组的首选方法是什么?性能问题如何

System.arraycopy
(这使您能够通过
偏移量
长度
参数复制数组的任意部分)。或

它添加到JDK 6中,是一种通用方法,因此可以使用:

Integer[] is = new Integer[] { 4, 6 }
Integer[] copy = Arrays.copyOf(is, is.length);
或者它可以缩小类型:

Number[] is = new Number[]{4, 5};
Integer[] copy = Arrays.copyOf(is, is.length, Integer[].class);
请注意,您还可以在阵列上使用克隆方法

Number[] other = is.clone();

传统的做法是:

public static void java.lang.System.arraycopy(Object src, int srcPos, 
         Object dest, int destPos, int length)
这将从一个现有阵列复制到另一个阵列。您必须自己分配新阵列。。。假设您正在制作数组的副本

从JDK 6开始,
java.util.Arrays
类有许多
copyOf
方法用于制作数组的副本,具有新的大小。相关的是:

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

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

CLASS是否只复制数组本身(即数组中的引用),或者你还想克隆数组中引用指向的所有对象吗?Touchéoxbow-有人半小时后带着相同的答案出现并被接受了!@pjp:我接受了Stephen的答案,因为他补充了问题的性能部分。这一点都没有问题-不知道pjp为什么如此敏感!对于那些想知道
int[]array={1,2,3};int[]copy=Arrays.copyOf(array,array.length,Integer.class);
不会编译的人(“类型数组中的copyOf(int[],int)方法不适用于参数(int[],int,class)”)
public static <T> T[] copyOf(T[] original, int newLength)
public static <T,U> T[] copyOf(U[] original, int newLength,
         Class<? extends T[]> newType)