Ответ
Порядок выполнения определяется жизненным циклом класса и объекта:
- Статический блок инициализации — выполняется один раз при первой загрузке класса JVM (например, при первом обращении к классу).
- Статический метод — выполняется при явном вызове, после загрузки класса.
- Конструктор — выполняется каждый раз при создании нового экземпляра класса с помощью
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. Конструктор выполняется при создании объекта.