Встречается на собеседованиях • сегодня
Почему класс String final
Класс String объявлен как final по нескольким ключевым причинам:
- Безопасность и неизменяемость (immutability) –
Stringчасто используется для хранения паролей, URL, параметров и других критичных данных. Если бы класс можно было унаследовать, подклассы могли бы нарушить его неизменяемость, что привело бы к уязвимостям.
-
Кеширование хешей –
Stringкеширует свойhashCode(), что ускоряет работу с коллекциями (например,HashMap). Если бы подклассы могли изменить состояние строки, хеш стал бы невалидным. -
Оптимизация JVM – Виртуальная машина может применять специальные оптимизации (например, пул строк), зная, что
Stringнеизменяем и не может быть переопределен. -
Потокобезопасность – Неизменяемые объекты по умолчанию потокобезопасны, так как их состояние нельзя изменить после создания.
Пример:
java
// Если бы String был не final, можно было бы так:
class MyString extends String {
@Override
public char charAt(int index) {
return 'X'; // Ломаем логику String
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы