Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: string, immutability, memory, jvm

Иммутабельность String и String Pool

Оценивает знание работы со строками и оптимизаций JVM.

Короткий ответ

String иммутабелен, потому что:

  1. Это безопасно для многопоточности.

  2. Позволяет кешировать строки в String Pool (например, при String s = "text").

  3. Хеш-код строки неизменен, что важно для HashMap.

Длинный ответ

Иммутабельность:

  • При "изменении" строки создаётся новый объект:

    String s1 = "Hello";
    String s2 = s1.concat(" World"); // Создаётся новая строка, s1 не меняется

String Pool:

  • Пул строк — область в heap-памяти для кеширования строковых литералов.

  • При создании через "..." строка ищется в пуле:

    String a = "text"; // Добавляется в пул
    String b = "text"; // Берётся из пула (a == b вернёт true)
    String c = new String("text"); // Новый объект вне пула (a == c — false)
  • Метод intern() помещает строку в пул:

    String d = new String("text").intern(); // a == d → true

Преимущества:

  • Безопасность: Передача строк между потоками без риска изменения.

  • Экономия памяти: Дубликаты не создаются.

Вывод: Иммутабельность String критична для безопасности и производительности.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#string

#immutability

#memory

#jvm

Подпишись на Java Developer в телеграм