A pesar que copiar puede sonar como una actividad muy sencilla realmente es un poco más compleja que asignar el valor del array a otra variable declarada de este tipo.
Copiando Arrays
Como parte de la lógica de nuestros programas, probablemente en algún momento necesitemos copiar un array en una variable diferente, de forma de poder trabajar con los elementos en otra instancia del programa, como mencionamos al inicio hacer una asignación de la variable que contiene al array en otro no es la solución adecuada.
Supongamos que hacemos la asignación de la siguiente forma:
varArrar2 = varArray1;
En este caso no hay un error sintáctico por lo que la instrucción funciona sin problemas, inclusive si intentamos recorrer varArray2 obtendremos los valores que sabemos que tenemos en varArray1, se preguntaran dónde está el problema entonces, el problema es que en esta instrucción lo que hizo Java fue copiar la referencia al contenido del primer array, por lo que si hacemos un cambio en cualquiera de los dos ambos verán el cambio.
Como vemos este no es un método muy efectivo a menos que lo que queramos sea copiar la referencia efectivamente.
Utilizando un Bucle
Este es el método más sencillo de todos, aunque es un poco laborioso cumple con el objetivo de forma correcta y nos permite obtener un nuevo array que sería la copia del original y totalmente independiente de este, para lograr hacer esta copia vamos a realizar lo siguiente:
int[] varArray1 = {2, 3, 1, 5, 10}; int[] varArray2 = new int[varArray1.length]; for (int i = 0; i < varArray1.length; i++) { varArray2[i] = varArray1[i]; }
Como vemos es algo muy sencillo, tenemos nuestro primer array con una cantidad de valores ya asignados en su contenido, creamos un segundo array y le indicamos que su dimensión va a ser la longitud del array original y finalmente con un ciclo for vamos asignando a nuestro nuevo array el valor que corresponde a la posición del ciclo del primer array.
Utilizando el Método arraycopy
Una forma más sencilla y que utiliza un poco menos de código es el método estático arraycopy, este método rompe con la convención de nombres de Java sin embargo funciona correctamente, para utilizarlo debemos hacer lo siguiente:
System.arraycopy(varArray1, varArray1_pos, varArray2, varArray2_pos, longitud);
Como vemos en una sola linea resolvemos el problema, el método recibe en su primer argumento el array que vamos a copiar, luego recibe la posición inicial desde donde vamos a copiar, luego el array destino de la copia, su posición inicial y por último la longitud de la copia:
Para finalizar, vimos que copiar un array a pesar que no es tan sencillo como una asignación de variables, es una tarea relativamente fácil utilizando los métodos descritos en este tutorial.