РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
79 of 1163 menu

Статический инициализатор

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

В одном классе можно объявить несколько статических инициализаторов - они выполняются в том порядке, в котором записаны в коде.

Синтаксис

public class MyClass { static { // код инициализации } }

Пример

Давайте создадим класс со статическим инициализатором, который задаёт значение статического поля:

public class Main { static int num; static { num = 42; System.out.println("Static init: num = " + num); } public static void main(String[] args) { System.out.println("Main: num = " + num); } }

Результат выполнения кода:

"Static init: num = 42" "Main: num = 42"

Пример

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

public class Main { static int counter; static { counter++; System.out.println("Init called: " + counter); } public Main() { System.out.println("Constructor called"); } public static void main(String[] args) { new Main(); new Main(); new Main(); } }

Результат выполнения кода:

"Init called: 1" "Constructor called" "Constructor called" "Constructor called"

Пример

Давайте используем статический инициализатор для заполнения статической коллекции:

import java.util.List; import java.util.ArrayList; public class Main { static List<String> res; static { res = new ArrayList<>(); res.add("a"); res.add("b"); res.add("c"); } public static void main(String[] args) { System.out.println(res); } }

Результат выполнения кода:

[a, b, c]

Смотрите также

  • ключевое слово static,
    которое создаёт статические поля и методы
  • инициализатор экземпляра instance init,
    который выполняется при создании объекта
  • конструктор класса constructor,
    который вызывается при создании объекта
  • ключевое слово final,
    которое запрещает изменение поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить