Я новичок в Java, и у меня есть некоторые вопросы относительно назначения объектов. Например,
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Предполагая, что переменная i
определена внутри тестового класса, я имею право предположить, что и 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?