Вопрос №500 от пользователя Николай Артамонов в уроке «Модуль 5. Урок 3. Неизменяемые объекты.», курс «Введение в Java»
Какое отношение имеет данное тестовое задание к теме "immutable objects" ?
public class Figure {
public static void main(String[] args) {
String s = "12";
s.concat("xo");
s = dot(s);
System.out.println(s);
}
static String dot(String s) {
s.concat("34");
return s;
}
}
Изначально рассчитывалось на привлечение внимания к тому, что String является immutable. Но так как получилось не очень явно, то мы удалили этот тест из вопросов.
Насколько я понял, в этом тесте просто не происходит изменения объекта String s, если бы строчка s.concat("xo"); - выглядела вот так - s = s.concat("xo"); то строка бы изменилась. Если было бы final String s, запись s = s.concat("xo"); - была бы не "валидной".
(Данные выводы основаны не на документации, а на пробах в IDEA.
s = s.concat("xo") - в этой строчке изменилась бы не строка, а указатель стал бы указывать на совершенно новую строчку. Так как строчки в Java immutable, то в данном конкретном месте создалась бы полностью новая строчка на которую бы стала указывать ссылка с именем s.
Спасибо за ответ!
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







