Asignación de objetos Java
Soy nuevo en Java y tengo algunas preguntas en mente con respecto a la asignación de objetos. Por ejemplo,
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Asumiendo variablei
se define dentro de la clase de prueba, tengo derecho a suponer que tanto t1 como t2 apuntan al mismo objeto donde se realiza la modificaciónt1.i=1
afecta a ambost1
yt2
? En realidad lo probé y parece que tenía razón. Sin embargo, cuando intento lo mismo enString
, la modificación ocurre solo en un lado donde el otro lado no se ve afectado. Cuál es la razón detrás de esto?
Edit: El caso lo intenté con String.
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
Me doy cuenta de mi error al probar los casos en String ya que es inmutable. La situación en la que pensé.s1="1"
modificar la cadena es, de hecho, devolver la referencia de "1" a la s1. Sin embargo, mi pregunta permanece. HaceTest t2 = t1;
¿Porque tanto t2 como t1 apuntan al mismo objeto o cada uno tiene ahora sus propios objetos? ¿Esta situación se aplica a todos los objetos en Java?