Atribuição de objeto Java
Eu sou novo em Java e tenho algumas dúvidas em relação à atribuição de objetos. Por exemplo,
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Assumindo a variáveli
está definido dentro da classe Test, estou certo em assumir que tanto o T1 quanto o T2 apontam para o mesmo objeto onde a modificaçãot1.i=1
afeta tantot1
et2
? Na verdade eu testei e parece que eu estava certo. No entanto, quando eu tento a mesma coisaString
, a modificação acontece apenas em um lado onde o outro lado não é afetado. Qual é a razão por trás disso?
Edit: O caso que eu tentei com String.
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
Eu percebo o meu erro, testando os casos em String, uma vez que é imutável. A situação em que penseis1="1"
modificar a string está, de fato, retornando a referência de "1" para o s1. No entanto, minha pergunta permanece. FazTest t2 = t1;
porque tanto o t2 quanto o t1 apontam para o mesmo objeto ou cada um agora tem seus próprios objetos? Esta situação se aplica a todos os objetos em Java?