Статические блоки и статическая инициализация используются для инициализации статических полей в Java. Мы объявляем статический блок в тот момент, когда хотим проинициализировать статические поля в классе.
Статический блок выполняется только один раз, при загрузке класса загрузчиком.
Статический блок выполняется до вызова конструктора.
Также можно сказать что статические поля и методы принадлежат классу, нестатические — объекту.
Пример синтаксиса ниже:
public class StaticTest { public static class StatClass { static int i = 5; } public static class StaticBlockClass { static { int a = 3; int b = 10; if (b < a) System.out.println(a); else System.out.println(b); } } public static void main(String[] args) throws ClassNotFoundException { // Не создавая экземпляр класса мы можем обратиться к статическим полям благодаря статической инициализации System.out.println(StatClass.i); // При загрузке класса выполняется статический блок, в котором можно выполнять проверки и т.д. System.out.println(Class.forName(StaticBlockClass.class.getName())); } } Вывод: 5 10 class StaticTest$StaticBlockClass
Комментарии: