Найти тему
DEBAGanov

Java 1175. Зачем нужны и какие бывают блоки инициализации?

Блоки инициализации (initialization blocks) в Java используются для инициализации переменных класса и других статических компонентов, в том числе для установки значений по умолчанию, создания экземпляров класса, вызова методов и работы с исключениями. Бывают два типа блоков инициализации: статические (static) и нестатические (instance).

Статические блоки инициализации выполняются при загрузке класса в JVM (Java Virtual Machine), до создания его объектов. Они используются для инициализации статических полей класса.

Нестатические блоки инициализации выполняются при создании объекта класса, перед выполнением конструктора. Они используются для присваивания начальных значений полей объекта, которые не могут быть установлены при объявлении поля.

Вот пример, демонстрирующий использование статических и нестатических блоков инициализации в Java:

public class MyClass {
static int staticVar;
int instanceVar;

static {
// статический блок инициализации
staticVar = 10;
System.out.println("Static initialization block");
}

{
// нестатический блок инициализации
instanceVar = 20;
System.out.println("Instance initialization block");
}

public MyClass() {
// конструктор
System.out.println("Constructor");
}
}

// создание объекта класса
MyClass obj = new MyClass();

При выполнении этого кода будет выведено:

Static initialization block
Instance initialization block
Constructor

Это означает, что сначала был выполнен статический блок инициализации для инициализации статической переменной staticVar, затем нестатический блок инициализации и конструктор.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov