Modifique una matriz pasada como un parámetro de método
Suponga que tengo un int-array y quiero modificarlo. Sé que no puedo asignar una nueva matriz a la matriz pasada como parámetro:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 1
}
public static void method(int[] n)
{
n = new int[]{2};
}
mientras puedo modificarlo:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 2
}
public static void method(int[] n)
{
n[0] = 2;
}
ntonces, traté de asignar una matriz arbitraria a la matriz pasada como parámetro usandoclone()
:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 1 ?!
}
public static void method(int[] n)
{
int[] temp = new int[]{2};
n = temp.clone();
}
Ahora, me pregunto por qué imprime 1 en el último ejemplo mientras estoy copiando la matriz conclone()
que solo está copiando el valor, no la referencia. ¿Podría explicarme eso por favor?
EDITAR ¿Hay alguna forma de copiar una matriz a un objeto sin cambiar la referencia? Me refiero a hacer el último ejemplo de impresión2
.