Is there an equivalent to memcpy() in Java? Is there an equivalent to memcpy() in Java? arrays arrays

Is there an equivalent to memcpy() in Java?


Use System.arraycopy()

System.arraycopy(sourceArray,                  sourceStartIndex,                 targetArray,                 targetStartIndex,                 length);

Example,

String[] source = { "alpha", "beta", "gamma" };String[] target = new String[source.length];System.arraycopy(source, 0, target, 0, source.length);


or use Arrays.copyOf()
Example,

target = Arrays.copyOf(source, length);

java.util.Arrays.copyOf(byte[] source, int length) was added in JDK 1.6.

The copyOf() method uses System.arrayCopy() to make a copy of the array, but is more flexible than clone() since you can make copies of parts of an array.


You might try System.arraycopy or make use of array functions in the Arrays class like java.util.Arrays.copyOf. Both should give you native performance under the hood.

Arrays.copyOf is probably favourable for readability, but was only introduced in java 1.6.

 byte[] src = {1, 2, 3, 4}; byte[] dst = Arrays.copyOf(src, src.length); System.out.println(Arrays.toString(dst));


If you just want an exact copy of a one-dimensional array, use clone().

byte[] array = { 0x0A, 0x01 };byte[] copy = array.clone();

For other array copy operations, use System.arrayCopy/Arrays.copyOf as Tom suggests.

In general, clone should be avoided, but this is an exception to the rule.