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

Порой до создания объекта нужно сделать подготовительные или инициализирующие действия. Например, вычислить какие-либо статические величины, собрать системные данные, подключиться к базе данных или удалённому серверу. Для выполнения подобных действий в языке Java может использоваться статический блок.

Когда выполняется статический блок в Java

Код, расположенный в статическом блоке, будет выполнен во время запуска программы, при первой загрузке класса, ещё до того, как этот самый класс будет использоваться в программе (то есть до создания его экземпляров, вызова статических методов или обращения к полям и т. п.).

Создание статического блока в Java

Статический блок в Java создаётся внутри класса с помощью ключевого слова static:

Напишем класс TimeOfProgramStart, который содержит статический блок.

Класс содержит:

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

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

В методе main главного класса программы произведём создание экземпляра класса :

Запустим программу на исполнение. Ниже представлен результат её работы.

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

Таким образом было показано, что статический блок в классе выполняется де-факто при запуске программы и его выполнение никак не связано с созданием объектов данного класса и с использованием его членов. Данная возможность позволит Вам выполнить инициализирующие и подготовительные операции до обращения к определённому классу.

Статический блок в Java
5 (100%) 1 vote

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">