Угловая анимация с шестнадцатиричным списком отображает элементы списка дважды

Статический блок

Статический блок является статическим инициализатором (инициализатором класса). Вы можете использовать его для инициализации класса или для выполнения некоторой логики во время загрузки класса. Если вы удаляете статический модификатор, блок кода является инициализатором экземпляра.

Например, со статическими инициализаторами вы можете инициализировать карту данными db, которые будут использоваться позже при создании объекта.

Вы можете прочитать эту ссылку , которая очень хорошо объясняет это.

Я считаю полезным эту цитату:

Статические блоки также называются статическими блоками инициализации , Статический блок инициализации является нормальным блоком кода, заключенным в фигурные скобки, {} и предшествует ключевому слову static. Вот пример:

blockquote>
static {
    // whatever code is needed for initialization goes here
}

Класс может иметь любое количество статических блоков инициализации, и они могут появляться в любом месте тела класса. Система времени выполнения гарантирует, что статические блоки инициализации вызываются в порядке их появления в исходном коде. И не забывайте, что этот код будет выполнен, когда JVM загрузит класс. JVM объединяет все эти блоки в один статический блок и затем выполняет

blockquote>

Например, этот код:

public class StaticExample{
    static {
        System.out.println("This is first static block");
    }

    public StaticExample(){
        System.out.println("This is constructor");
    }

    public static String staticString = "Static Variable";

    static {
        System.out.println("This is second static block and "
                                                + staticString);
    }

    public static void main(String[] args){
        StaticExample statEx = new StaticExample();
        StaticExample.staticMethod2();
    }

    static {
        staticMethod();
        System.out.println("This is third static block");
    }

    public static void staticMethod() {
        System.out.println("This is static method");
    }

    public static void staticMethod2() {
        System.out.println("This is static method2");
    }
}

Генерирует этот вывод:

This is first static block
This is second static block and Static Variable
This is static method
This is third static block
This is constructor
This is static method2

Статический метод (альтернативный статическому блоку)

Вы можете написать частный статический метод для достижения того же, а преимущество использования частных статических методов заключается в том, что их можно повторно использовать позже, если вам нужно для повторной инициализации переменной класса.

Например:

class Whatever {
    public static varType myVar = initializeClassVariable();

    private static varType initializeClassVariable() {

        // initialization code goes here
    }
}

0
задан Jake Castle 13 July 2018 в 19:03
поделиться