Что такое статический блок и статическая инициализация в Java?

Статические блоки и статическая инициализация используются для инициализации статических полей в 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

 

Понравилась статья? Поделиться с друзьями:

Комментарии:

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: