Я новичок в 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?