Java - Se limpian los 2 ArrayList al hacerle clean a uno y no entiendo el porqué [11 líneas de código].

 
Vista:

Se limpian los 2 ArrayList al hacerle clean a uno y no entiendo el porqué [11 líneas de código].

Publicado por Jordi (135 intervenciones) el 13/09/2017 20:08:16
Hola gente,
tengo un programa que en una parte hace lo siguiente, lo pongo en un main para no tener que adjuntar todo el código:
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
 
	ArrayList<Integer> a = new ArrayList<Integer>();
	ArrayList<Integer> b = new ArrayList<Integer>();
 
	a.add(1);
	b = a;
	a.clear();
	System.out.println(b.size());
 
}

Y no sé porque también se limpia el arreglo b al limpiar a...
He echo una prueba con numeros y si hago a++, b mantiene su valor, pero al parecer con ArrayList algo hace que queden vinculados.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 124
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Se limpian los 2 ArrayList al hacerle clean a uno y no entiendo el porqué [11 líneas de código].

Publicado por Yamil Bracho (2303 intervenciones) el 13/09/2017 20:24:40
Tanto a como b son referencias, es decir, apuntadores .
Cuando haces b=a lo que estas haciendo es que b APUNTE a la misma direccion que a, por lo tanto si haces un cambio en a, este se vera reflejado en b porque basicamente es un alias de a.
Este comportamiento es normal en objetos, y en los numeros como dices no se da porque en Java tiene la distincion entre primitivos y clases.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Se limpian los 2 ArrayList al hacerle clean a uno y no entiendo el porqué [11 líneas de código].

Publicado por Jordi (135 intervenciones) el 13/09/2017 20:35:05
Ahora todo tiene sentido ¡muchas gracias Yamil!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar