— Привет, Амиго! Слышала, Риша рассказал тебе новую и очень интересную тему?!
— Да, Ким.
— Моя тема будет не менее интересной. Я хочу рассказать тебе о загрузке в память классов.
Классы в Java – это файлы на диске, содержащие байт-код – скомпилированный Java-код.
— Да, я помню.
— Java-машина не загружает их без необходимости. Как только где-то в коде происходит обращение к классу, Java-машина проверяет – загружен ли он. И если нет, то загружает и инициализирует его.
Инициализация класса – это присваивание значений всех его статических переменных и вызов всех статических блоков.
— Похоже на вызов конструктора у объекта. А что такое статический блок?
— Если для инициализации переменных объекта нужно выполнить сложный код (например, что-то загрузить из файла), мы можем сделать это в конструкторе. Статические переменные такой возможности лишены. Но т.к. потребность в этом осталась, в классы можно добавить статический блок или блоки, которые по сути своей эквивалентны вызову статических конструкторов.
Вот как это выглядит:
| Код | Что происходит на самом деле |
|---|---|
|
|
Это очень похоже на то, что происходит при вызове конструктора. Я даже записала это в виде несуществующего статического конструктора.
— Да, я все понял.
— Отлично.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
жадностипотребностей работодателя (ATS-системы никто не отменял) и от того, на какой уровень ты идёшь (Junior, Middle). Если ты запутался, я бы посоветовал тебе ответить на следующие вопросы: 1. На какую вакансию претендую? 2. Какие компетенции необходимы для этой вакансии? 3. Где могу освоить эти стеки бесплатно или с более выгодным соотношением цена/качество? 4. Каким будет план подготовки к собеседованиям с учётом имеющегося стека и времени? Пример: хочу условно стать Junior Backend Java-разработчиком. На HH.ru/LinkedIn смотрю требования и группирую наиболее часто встречающиеся из них в Excel-таблице. У ИИ спрашиваю, для чего нужен каждый стек и в каком порядке его изучать. Ищу материалы на Stepik/YouTube, сверяю их содержание с рекомендациями ИИ и добавляю лучшие из них в roadmap. Составляю план подготовки к собесам и готовлюсь сам — курсы дают базу, но трудоустройство целиком на тебе =)идеальномусильному Java-разработчику: Roadmap Java-разработчика