Вопрос №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;

}

}
4 1

Глеб Бочкарёв

Изначально рассчитывалось на привлечение внимания к тому, что String является immutable. Но так как получилось не очень явно, то мы удалили этот тест из вопросов.

0

Николай Артамонов

Насколько я понял, в этом тесте просто не происходит изменения объекта String s, если бы строчка s.concat("xo"); - выглядела вот так - s = s.concat("xo"); то строка бы изменилась. Если было бы final String s, запись s = s.concat("xo"); - была бы не "валидной".

(Данные выводы основаны не на документации, а на пробах в IDEA.

0

Глеб Бочкарёв

s = s.concat("xo") - в этой строчке изменилась бы не строка, а указатель стал бы указывать на совершенно новую строчку. Так как строчки в Java immutable, то в данном конкретном месте создалась бы полностью новая строчка на которую бы стала указывать ссылка с именем s.

0

Николай Артамонов

Спасибо за ответ!

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
1 июня 5 месяцев