— З цієї лекції ти дізнаєшся про завантаження класів до пам'яті.
Класи в Java – це файли на диску, що містять байт-код – скомпільований Java-код.
— Так, я пам'ятаю.
— Java-машина не завантажує їх без потреби. Як тільки десь у коді відбувається звернення до класу, Java-машина перевіряє – чи він завантажений. І якщо ні, то завантажує та ініціалізує його.
Ініціалізація класу – це присвоєння значень всіх його статичних змінних та виклик всіх статичних блоків.
— Схоже на виклик конструктора в об'єкта. А що таке статичний блок?
— Якщо для ініціалізації змінних об'єкта потрібно виконати складний код (наприклад, щось завантажити з файлу), ми можемо це зробити в конструкторі. Статичні змінні такої можливості не мають. Але оскільки потреба в цьому залишилася, до класів можна додати статичний блок або блоки, які по суті своїй еквівалентні виклику статичних конструкторів.
Ось як це виглядає:
Код | Що відбувається насправді |
---|---|
|
|
Це дуже схоже на те, що відбувається під час виклику конструктора. Я навіть записав це у вигляді неіснуючого статичного конструктора.
— Так, я все зрозумів.
— Чудово.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ