Меня спросили в интервью, почему String неизменен
Я ответил так:
Когда мы создаем строку в java как
String s1="hello";
, тогда объект будет создан в пуле строк (привет) и s1 будет указывая на привет. Теперь, если снова мы сделаемString s2="hello";
, тогда другой объект не будет создан, но s2 будет указывать наhello
потому что JVM сначала проверит, находится ли тот же объект в пул строк или нет. Если этого не существует, то новый создается иначе.
Теперь, если предположить, что java разрешает строку mutable, то, если мы изменим s1 на hello world
, то значение s2 также будет hello world
, поэтому строка java неизменна.
Может ли любой орган рассказать мне, соответствует ли мой ответ правильным или неправильным?