Рубрики

Статические блоки в Java

В отличие от C ++, Java поддерживает специальный блок, называемый статическим блоком (также называемый статическим предложением), который можно использовать для статической инициализации класса. Этот код внутри статического блока выполняется только один раз: при первом создании объекта этого класса или при первом обращении к статическому члену этого класса (даже если вы никогда не создаете объект этого класса). Например, проверьте вывод следующей программы Java.

// имя файла: Main.java

class Test {

    static int i;

    int j;

      

    // начало статического блока

    static {

        i = 10;

        System.out.println("static block called ");

    }

    // конец статического блока

}

  

class Main {

    public static void main(String args[]) {

  

        // Хотя у нас нет объекта Test, статический блок

        // вызван, потому что ко мне обращаются в следующем утверждении.

        System.out.println(Test.i); 

    }

}

Выход:
статический блок называется
10

Также статические блоки выполняются перед конструкторами. Например, проверьте вывод следующей программы Java.

// имя файла: Main.java

class Test {

    static int i;

    int j;

    static {

        i = 10;

        System.out.println("static block called ");

    }

    Test(){

        System.out.println("Constructor called");

    }

}

  

class Main {

    public static void main(String args[]) {

  

       // Хотя у нас есть два объекта, статический блок выполняется только один раз.

       Test t1 = new Test();

       Test t2 = new Test();

    }

}

Выход:
статический блок называется
Конструктор называется
Конструктор называется

Что если мы хотим выполнить некоторый код для каждого объекта?
Мы используем блок инициализатора в Java

Ссылки:
Мышление в книге Java

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

Рекомендуемые посты:

Статические блоки в Java

0.00 (0%) 0 votes