Назначение объектов Java

Я новичок в Java, и у меня есть несколько вопросов относительно назначения объектов. Например,

Test t1 = new Test();
Test t2 = t1;
t1.i=1;

Предполагая, что переменная iопределена внутри класса Test, правильно ли я предполагаю, что и t1, и t2 указывают на один и тот же объект, на который влияет модификация t1.i=1оба t1и t2? На самом деле я проверил это и, кажется, я был прав. Однако, когда я пытаюсь сделать то же самое с String, модификация происходит только на одной стороне, а другая не затрагивается. В чем причина этого?

Редактировать: Случай, который я пробовал со String.

String s1 = "0";
String s2 = s1;          
s1 = "1";
System.out.println(s1);
System.out.println(s2);

Я осознаю свою ошибку, проверяя случаи на String, так как он неизменяем. Ситуация, когда я думал s1="1"изменить строку, на самом деле возвращает ссылку "1" на s1. Тем не менее, мой вопрос остается. Приводит ли Test t2 = t1; к тому, что и t2, и t1 указывают на один и тот же объект, или каждый из них теперь имеет свои собственные объекты? Эта ситуация применима ко всем объектам на Java?

18
задан 13 June 2012 в 09:37
поделиться