Рассмотрим следующий пример.
String str = new String();
str = "Hello";
System.out.println(str); //Prints Hello
str = "Help!";
System.out.println(str); //Prints Help!
Теперь в Java объекты String неизменяемы. Тогда как объекту str
может быть присвоено значение "Справка!". Разве это не противоречит неизменности строк в Java? Может ли кто-нибудь объяснить мне точное понятие неизменности?
Edit:
Ok. Теперь я получаю это, но только один вопрос. Как насчет следующего кода:
String str = "Mississippi";
System.out.println(str); // prints Mississippi
str = str.replace("i", "!");
System.out.println(str); // prints M!ss!ss!pp!
Означает ли это, что два объекта снова создаются ( "Миссисипи" и "M! ss! ss! pp!" ), а ссылка str
указывает на другой объект после метода replace()
?