Добавить в корзинуПозвонить
Найти в Дзене
Записки о Java

Использование static в Java

Ключевое слово static в JAVA - одно из самых важных и часто используемых. Оно позволяет создавать члены класса, независимые от экземпляров, и играет ключевую роль в организации кода, повышении производительности и управлении ресурсами. В этой статье мы подробно разберем, что такое static, как оно применяется к различным элементам (полям, методам, блокам, классам), когда его использовать и на что обратить внимание. Слово static означает "принадлежащий классу, а не экземпляру". Это значит, что static-члены: Статические поля — это переменные, общие для всех экземпляров класса. Пример: подсчёт количества созданных объектов Особенности: Статические методы принадлежат классу и могут вызываться без создания объекта. Пример: математическая утилита: Ограничения статических методов: Статический блок выполняется один раз при загрузке класса в JVM. Используется для инициализации сложных статических данных. Пример: инициализация карты конфигурации: Особенности: В Java вложенные классы могут быть ст
Оглавление
Рисунок: static в JAVA
Рисунок: static в JAVA

Введение

Ключевое слово static в JAVA - одно из самых важных и часто используемых. Оно позволяет создавать члены класса, независимые от экземпляров, и играет ключевую роль в организации кода, повышении производительности и управлении ресурсами.

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

Что означает static?

Слово static означает "принадлежащий классу, а не экземпляру". Это значит, что static-члены:

  • Создаются один раз при загрузке класса.
  • Доступны без создания объекта.
  • Общие для всех экземпляров класса.

Статические поля (static fields)

Статические поля — это переменные, общие для всех экземпляров класса.

Пример: подсчёт количества созданных объектов

Рисунок: листинг примера подсчета количества созданных объектов
Рисунок: листинг примера подсчета количества созданных объектов

Особенности:

  • Поле count одно на все объекты.
  • Доступ через имя класса: Counter.getCount().

2. Статические методы (static methods)

Статические методы принадлежат классу и могут вызываться без создания объекта. Пример: математическая утилита:

Рисунок: листинг математической утилиты
Рисунок: листинг математической утилиты
Рисунок: использование математической утилиты
Рисунок: использование математической утилиты

Ограничения статических методов:

  • Не могут обращаться к нестатическим полям и методам напрямую.
  • Не имеют доступа к this и super.

3. Статические блоки (static blocks)

Статический блок выполняется один раз при загрузке класса в JVM. Используется для инициализации сложных статических данных. Пример: инициализация карты конфигурации:

Рисунок: листинг статического блока конфигурации
Рисунок: листинг статического блока конфигурации
Рисунок: метод main, пример работы со статическим блоком конфигурации
Рисунок: метод main, пример работы со статическим блоком конфигурации

Особенности:

  • Выполняется до конструктора и до main().
  • Полезен для загрузки ресурсов, инициализации кэшей, подключения к БД и т.д.
  • Может быть несколько, выполняются в порядке объявления.

4. Статические классы (static nested classes)

В Java вложенные классы могут быть статическими. Такие классы не зависят от экземпляра внешнего класса. Пример: вложенный статический класс:

Рисунок: статический класс Inner
Рисунок: статический класс Inner
Рисунок: использование статического класса Inner в методе main
Рисунок: использование статического класса Inner в методе main

Заключение

Ключевое слово static — мощный инструмент в Java, позволяющий:

  • Создавать общие поля и методы.
  • Обращаться к данным без создания объектов.
  • Организовывать утилиты и конфигурации.
  • Управлять глобальным состоянием.

Главные принципы:

  • static принадлежит классу, а не объекту.
  • Доступ через имя класса: ClassName.method().
  • Не имеет доступа к this, но может работать с другими static-членами.

Листинг примеров, рассмотренных в статье можно найти по адресу:

https://github.com/ShkrylAndrei/blog_yandex/tree/main/src/main/java/info/shkryl/useStatic