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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta