Я никогда не сомневался в том, что строки неизменяемы, пока я не понял, что мы можем конкатенировать строки в java. Например:Поскольку мы можем конкатенировать строки в Java, почему мы все еще называем строку неизменной?
String character = "ha";
String otherString = "Alo";
otherString=otherString+character;
System.out.println(otherString);
И это будет работать. Поэтому мы изменили строку под названием «otherString». Я не понимаю, что означает строка неизменяемо?
Спасибо за помощь!
Поскольку конкатенация создает новый непреложный экземпляр. * * Переменная * является, ну, переменной и может быть изменена, чтобы указать на другой объект (или null); но объект, на который он указывает, является неизменным. –
Не путайте переменные и объекты и не путайте присвоение с помощью вызова/метода. –
Ваш пример не изменяет переменную, а переназначает ее. Неизбежно в этом контексте означает, что вы не можете выполнить 'otherString.substring (5);' и ожидать, что 'otherString' изменится. 'otherString' является объектом и этот объект не может быть изменен. Когда вы назначаете его новому значению, старый объект будет отброшен. – tresf