AD

¿Ya dominas lo básico? Un curso estructurado de Java es la vía rápida para dar el salto.

Ver cursos de Java en Udemy

Enlace de afiliado. No te cuesta nada extra.

Lecciones de Java
Lección 40 / 68

Copia superficial y copia profunda

En esta lección verás qué se copia de verdad al asignar un objeto y qué no.

Asignar una variable de objeto copia la referencia, no el objeto. Las dos variables acaban apuntando a lo mismo, así que un cambio a través de una se ve desde la otra.

El código de ejemplo copia un objeto y lo modifica a través de la copia; el original también cambia.

Esa es la diferencia entre copia superficial y profunda, y es la causa de errores especialmente difíciles: modificas una cosa y cambia otra que creías independiente. Para separarlas de verdad hay que crear un objeto nuevo y copiar los campos.

Ojo con las colecciones: new ArrayList<>(otra) crea una lista nueva, pero los elementos siguen siendo los mismos objetos. Es una copia superficial de la lista. La forma más limpia de evitar todo esto es hacer los objetos inmutables — con record, por ejemplo — para que no haya nada que copiar mal.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Java directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)