Что такое "статический"?
В сценариях, где мы хотим получить доступ к членам класса без создания каких-либо экземпляров класса, мы можем использовать ключевое слово 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 г. | Середина"