Рубрики
Без рубрики

Когда статические переменные инициализируются в Java?

Узнайте о статической инициализации переменной в Java.

Автор оригинала: baeldung.

Когда статические переменные инициализируются в Java?

1. Введение

В этом учебнике мы изумим статический процесс инициализации переменной. Виртуальная машина Java (JVM) следует этому процессу во время загрузки класса.

2. Процесс инициализации

На высоком уровне СПМ выполняет следующие действия:

Во-первых, класс загружается и связан. Затем “инициализация” фазы этого процесса обрабатывает статическую инициализацию переменной. Наконец, основные метод, связанный с классом, называется.

В следующем разделе мы посмотрим на инициализацию переменной класса.

3. Переменный класс

В Java статические переменные также называются переменными классов. То есть они принадлежат к классу, а не к конкретному экземпляру. В результате инициализация класса будет инициализировать статические переменные.

Напротив, экземпляр класса будет инициализировать переменные экземпляра (не статические переменные). Все экземпляры класса разделяют статические переменные класса.

Возьмем пример класса StaticVariableDemo :

public class StaticVariableDemo {  
    public static int i;
    public static int j = 20;

    public StaticVariableDemo() {}
}

Во-первых, СПМ создает Класс объект для класса StaticVariableDemo . Далее, статические инициализаторы поля присваивают значимое значение по умолчанию статическим полям. В нашем приведенном выше примере переменная Я сначала инициализируется с int значение по умолчанию нулевого .

Текстовый порядок применяется к статическим полям. Во-первых, Я будет инициализировать, а затем j будут инициализированы. После этого , класс и его статические участники будут видны другим классам.

4. Переменный в статическом блоке

Возьмем другой пример:

public class StaticVariableDemo {  
    public static int z;

    static {
        z = 30;
    }
    public StaticVariableDemo() {}
}

В этом случае переменная инициализация будет последовательной. Например, СПМ изначально присваивает переменную z по умолчанию int значение 0. Затем, в статические блок, он изменен на 30.

5. Переменный в статичном гнездовом классе

Наконец, давайте возьмем пример вложенного класса внутри внешней StaticVariableDemo класс:

public class StaticVariableDemo {  
    public StaticVariableDemo() {}
    
    static class Nested {
        public static String nestedClassStaticVariable = "test";
    }
}

В этом случае класс StaticVariableDemo загружает Вложенные класс. Это будет инициализировать статическую переменную вложенныйКлассСтатикВарийный .

6. Заключение

В этой короткой статье мы кратко объяснили статическую инициализацию переменной. Для получения более подробной информации, Спецификация языка Java .

Как всегда, фрагменты кода доступны на GitHub .