Встречается на собеседованиях • сегодня

Почему класс String final

Класс String объявлен как final по нескольким ключевым причинам:

  1. Безопасность и неизменяемость (immutability)String часто используется для хранения паролей, URL, параметров и других критичных данных. Если бы класс можно было унаследовать, подклассы могли бы нарушить его неизменяемость, что привело бы к уязвимостям.
  1. Кеширование хешейString кеширует свой hashCode(), что ускоряет работу с коллекциями (например, HashMap). Если бы подклассы могли изменить состояние строки, хеш стал бы невалидным.

  2. Оптимизация JVM – Виртуальная машина может применять специальные оптимизации (например, пул строк), зная, что String неизменяем и не может быть переопределен.

  3. Потокобезопасность – Неизменяемые объекты по умолчанию потокобезопасны, так как их состояние нельзя изменить после создания.

Пример:

java
// Если бы String был не final, можно было бы так:
class MyString extends String {
    @Override
    public char charAt(int index) {
        return 'X'; // Ломаем логику String
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы