Если ваш код
name="name";
name.replace('a', 'i'); //assignment to String variable name is neglected
System.out.print(name)
, то выведите:
name
это потому, что name.replace('a','i')
поместил бы замененную строку, nime
в пул строк, носсылка не указана на имя строковой переменной.
Всякий раз, когда вы пытаетесь изменить строковый объект,
проверяет Java, является ли результирующая строка доступной в пуле строк
, если доступна ссылка на доступныйстрока указывает на строковую переменную
, иначе в строковом пуле создается новый строковый объект, а ссылка на созданный объект указывается на строковую переменную.