Что такое "статический"?

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

Преимущество использования «статического» ключевого слова:

  • Лучшее управление памятью.
  • Можно получить доступ без предварительного создания объекта класса
  • Совместно используйте одну и ту же переменную или метод данного класса, больше похожий на постоянную переменную или метод, одинаковый для каждого экземпляра класса.

Где его использовать?

Ключевое слово static — это модификатор доступа в Java, который применим для следующего:

  • Блоки
  • Переменные
  • Методы
  • Классы

Статические блоки:

  • Используется для инициализации статических переменных. Например. для вычисления дополнительной логики перед использованием статических переменных или для обработки исключений.
  • Статический блок выполняется ровно один раз при первой загрузке класса.
  • Класс может иметь несколько блоков static.
  • Поля static и блоки static разрешаются и выполняются в том же порядке, в котором они присутствуют в классе.

Синтаксис:

Статические переменные:

  • Статические переменные принадлежат классу.
  • Мы можем получить доступ к полям static без инициализации объекта.
  • Он является общим для всех экземпляров (объектов) класса. К нему можно получить доступ, даже если не было создано ни одного экземпляра класса.
  • Можно создавать статические переменные на уровне класса только по существу глобальные переменные.
  • Доступ к статическим переменным также можно получить с помощью методов экземпляра Java (также называемых нестатическими методами). Однако этого следует избегать, так как это может запутать программиста.
  • Статические переменные хранятся в куче памяти.

Синтаксис объявления статических переменных:

static ‹dataType› ‹variableName›;

Синтаксис для доступа к статическим переменным:

имя_класса›.‹имя_переменной›();

Статические методы:

  • статические методы принадлежат классу, а не объекту. И их можно вызывать без создания объекта класса, в котором они находятся.
  • Статический метод может получить доступ к статическому члену данных и может изменить его значение.
  • Вы можете получить доступ к статическим методам через методы экземпляра java (т.е. нестатические методы).
  • Вы не можете получить доступ к нестатическому методу или переменной экземпляра в статических методах.
  • Статический метод не может ссылаться на ключевое слово this или super.
  • статические методы загружаются в память во время компиляции. Поскольку переопределение методов является частью полиморфизма времени выполнения, статические методы нельзя переопределять.
  • Абстрактные методы не могут быть статическими.
  • Обычно мы используем статические методы для создания служебных или вспомогательных классов, чтобы их можно было получить, не создавая новый объект этих классов.

Синтаксис для объявления статических методов:
‹accessModifier› static ‹returnType› ‹methodName›{ //строки кода }

Синтаксис для доступа к статическим методам:
‹className›.‹methodName›();

Статический класс:

  • Класс можно сделать статическим, только если он является вложенным классом.
  • Невозможно объявить класс верхнего уровня с модификатором static, но можно объявить вложенные классы как статические. Такие классы называются вложенными статическими классами.
  • Статический класс не может получить доступ к нестатическим членам внешнего класса.
  • Статический класс может получить доступ к статическим членам внешнего класса, включая частные.
  • Обеспечивает лучшее удобство упаковки.

Синтаксис:

class OutsideClass { 

   static class InsideClass {

   }
}

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

«Java: Может ли статический метод вызывать нестатический метод непосредственно в Java? | Ева :) | февраль 2022 г. | Середина"

Также ознакомьтесь с «Java: почему ключевое слово this нельзя использовать в статических методах? | Ева :) | март 2022 г. | Середина"