Sí, hay una diferencia. En cuanto a las dependencias de idioma, algunos lenguajes pueden hacer todas las copias superficiales, profundas y perezosas. Algunos solo hacen copias superficiales. Entonces sí, a veces depende del idioma.
Ahora, toma por ejemplo una matriz:
int [] numbers = { 2, 3, 4, 5};
int [] numbersCopy = numbers;
la matriz “numbersCopy” ahora contiene los mismos valores, pero lo más importante el propio objeto de matriz apunta a la misma referencia de objeto como el “número” array.
Así que si tuviera que hacer algo como:
numbersCopy[2] = 0;
¿Cuál sería el resultado de las siguientes afirmaciones?
System.out.println(numbers[2]);
System.out.println(numbersCopy[2]);
Teniendo en cuenta ambas matrices apuntan a la misma referencia que se pueden conseguir:
Pero lo que si queremos hacer una copia distinta de la primera matriz con su propio ¿referencia? Bueno, en ese caso, querríamos clonar la matriz. Al hacerlo, cada conjunto tendrá su propia referencia de objeto. Veamos cómo funcionará.
int [] numbers = { 2, 3, 4, 5};
int [] numbersClone = (int[])numbers.clone();
la matriz “numbersClone” ahora contiene los mismos valores, pero en este caso el propio objeto de matriz puntos de referencia diferente de la matriz “números”.
Así que si tuviera que hacer algo como:
numbersClone[2] = 0;
lo que sería la salida ahora para las siguientes afirmaciones?
System.out.println(numbers[2]);
System.out.println(numbersClone[2]);
lo has adivinado:
Source
No creo que haya un consenso claro en cuanto a su significado relativo. –