Я новичок в Java, и у меня есть некоторые вопросы в отношении назначения объектов. Например,Назначение объектов Java
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Предполагая, что переменная i
определяется внутри класса Test, я вправе предположить, как t1 и t2 точку на тот же объект, где модификация t1.i=1
влияет как t1
и t2
? На самом деле я проверил это и, похоже, был прав. Однако, когда я пытаюсь сделать то же самое на String
, модификация происходит только с одной стороны, где другая сторона не подвержена влиянию. В чем причина этого?
Редактировать: Случай, который я пробовал со строкой.
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
Я реализую свою ошибку, проверяя случаи на String, поскольку он является неизменным. Ситуация, когда я думал, что изменение строки на самом деле возвращает ссылку «1» на s1. Тем не менее, мой вопрос остается. Test t2 = t1;
приводит к тому, что t2 и t1 указывают на один и тот же объект или у каждого теперь есть свои собственные объекты? Используется ли эта ситуация для всех объектов на Java?
Что вы подразумеваете под «попробовать то же самое на String»? В объекте String нет методов для изменения самой строки. Пожалуйста, внимательно прочитайте документацию. – DRCB
Если вы публикуете код теста, который вы делаете на String, мы можем быть более конкретным в отношении того, что вы делаете неправильно. –