Make copy of an array Make copy of an array arrays arrays

Make copy of an array


You can try using System.arraycopy()

int[] src  = new int[]{1,2,3,4,5};int[] dest = new int[5];System.arraycopy( src, 0, dest, 0, src.length );

But, probably better to use clone() in most cases:

int[] src = ...int[] dest = src.clone();


you can use

int[] a = new int[]{1,2,3,4,5};int[] b = a.clone();

as well.


If you want to make a copy of:

int[] a = {1,2,3,4,5};

This is the way to go:

int[] b = Arrays.copyOf(a, a.length);

Arrays.copyOf may be faster than a.clone() on small arrays. Both copy elements equally fast but clone() returns Object so the compiler has to insert an implicit cast to int[]. You can see it in the bytecode, something like this:

ALOAD 1INVOKEVIRTUAL [I.clone ()Ljava/lang/Object;CHECKCAST [IASTORE 2