Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: class loading, static initialization, static block, JVM

Как происходит инициализация статических полей в Java?

Вопрос проверяет понимание порядка загрузки классов и инициализации статических членов в Java, что важно для предсказуемости поведения программы.

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

Статические поля инициализируются при загрузке класса в JVM, до создания любых объектов. Сначала выполняются статические переменные в порядке их объявления, затем статические блоки инициализации. Это происходит один раз за время работы приложения.

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

Как работает инициализация статических полей в Java

Когда JVM загружает класс, она выполняет инициализацию статических членов. Этот процесс происходит однократно, до того как будет создан первый объект класса или вызван любой статический метод. Порядок инициализации строго определён: сначала статические переменные в порядке их объявления, затем статические блоки инициализации.

Пример кода

public class Example {
    static int a = 10; // 1
    static int b;
    static {
        b = a * 2; // 2
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        System.out.println(a + " " + b);
    }
}

В этом примере сначала инициализируется a значением 10, затем выполняется статический блок, где b получает значение 20. Вывод: 10 20 и Static block.

Где применяется

Статическая инициализация используется для настройки конфигураций, загрузки драйверов или создания пулов соединений, которые должны быть готовы до начала работы с классом.

Вывод: Понимание порядка инициализации статических полей помогает избежать ошибок, связанных с зависимостями между статическими членами, и гарантирует корректную работу приложения.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Java

    Java

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

#class loading

#static initialization

#static block

#JVM

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