В каком порядке выполняются статический блок, статический метод и конструктор класса в Java?

«В каком порядке выполняются статический блок, статический метод и конструктор класса в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Порядок выполнения определяется жизненным циклом класса и объекта:

  1. Статический блок инициализации — выполняется один раз при первой загрузке класса JVM (например, при первом обращении к классу).
  2. Статический метод — выполняется при явном вызове, после загрузки класса.
  3. Конструктор — выполняется каждый раз при создании нового экземпляра класса с помощью new.

Демонстрационный код:

public class ExecutionOrder {
    static {
        System.out.println("1. Статический блок выполняется ПЕРВЫМ.");
    }

    public ExecutionOrder() {
        System.out.println("3. Конструктор выполняется при создании объекта.");
    }

    static void staticMethod() {
        System.out.println("2. Статический метод выполняется при вызове.");
    }

    public static void main(String[] args) {
        // Первое обращение к классу -> загрузка класса и статический блок.
        ExecutionOrder.staticMethod(); // Вызов статического метода.
        new ExecutionOrder(); // Создание объекта -> конструктор.
    }
}
// Вывод:
// 1. Статический блок выполняется ПЕРВЫМ.
// 2. Статический метод выполняется при вызове.
// 3. Конструктор выполняется при создании объекта.