Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I clone a java byte array?

Tags:

java

I have a byte array which i want to copy/clone to avoid calling code from modifying my internal representation.

How do I clone a java byte array?

like image 412
JavaRocky Avatar asked Jul 08 '10 23:07

JavaRocky


People also ask

How do you copy byte array?

copyOf(byte[] original, int newLength) method copies the specified array, truncating or padding with zeros (if necessary) so the copy has the specified length. For all indices that are valid in both the original array and the copy, the two arrays will contain identical values.

Can we clone an array in Java?

Java allows you to copy arrays using either direct copy method provided by java. util or System class. It also provides a clone method that is used to clone an entire array.

What is cloning an array in Java?

The copyOfRange() method is used to copy the elements of the specified range of the original array into clone array. The syntax of the copyOfRange() method is as follows: public static int[] copyOfRange(int[] original, int from, int to)


2 Answers

JLS 6.4.5 The Members of an Array Type

The members of an array type are all of the following:

  • The public final field length, which contains the number of components of the array (length may be positive or zero).
  • The public method clone, which overrides the method of the same name in class Object and throws no checked exceptions. The return type of the clone method of an array type T[] is T[].
  • All the members inherited from class Object; the only method of Object that is not inherited is its clone method.

Thus:

byte[] original = ...; byte[] copy = original.clone(); 

Note that for array of reference types, clone() is essentially a shallow copy.

Also, Java doesn't have multidimensional arrays; it has array of arrays. Thus, a byte[][] is an Object[], and is also subject to shallow copy.

See also

  • Wikipedia/Object copy
  • Java Nuts and Bolts/Arrays

Related questions

  • Deep cloning multidimensional arrays in Java… ?
  • How to effectively copy an array in java ?
  • How to deep copy an irregular 2D array
  • How do I do a deep copy of a 2d array in Java?

Other options

Note that clone() returns a new array object. If you simply want to copy the values from one array to an already existing array, you can use e.g. System.arraycopy.

There's also java.util.Arrays.copyOf that allows you to create a copy with a different length (either truncating or padding).

Related questions

  • Difference between various Array copy methods
like image 87
polygenelubricants Avatar answered Sep 23 '22 03:09

polygenelubricants


System.arraycopy(src, 0, dst, 0, src.length);

like image 43
TofuBeer Avatar answered Sep 21 '22 03:09

TofuBeer