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

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

Статическим может быть :

  • переменная ( переменная класса );
  • метод ( метод класса );
  • блок;
  • внутренний класс.

1) Статическая переменная Java

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

Преимущества статической переменной

Java static переменная не загружает память.

Пример, в котором не используется статическая переменная

Предположим, что в колледже 500 студентов. Класс Student будут задействовать память каждый раз при создании объекта. У всех студентов есть уникальное rollno и name . А college — это общее свойство для всех объектов. Если сделать его статическим, то поле будет задействовать память только один раз.

Статическое свойство Java является общим для всех объектов.

Пример статической переменной

Программа подсчета без статической переменной

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

Программа подсчета со статической переменной

Java static переменная задействует память только один раз. Если какой-либо объект изменяет значение статической переменной, она сохраняет свое значение.

Читайте также:  Фильм по глуховскому метро 2033

2) Статический метод Java

Если ключевое слово static применяется в объявлении метода, то это static method Java .

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

Пример статического метода

Другой пример Java static метода, выполняющего обычный расчет

Ограничения для статического метода

Существует два основных ограничения для статического метода:

  1. Статический метод не может использовать нестатические члены или напрямую вызывать нестатические методы;
  2. this и super нельзя использовать в статическом контексте.

Вопрос: почему основной main метод Java является статическим?

Ответ : поскольку объект не является обязательным для вызова статического метода, если он был нестатическим. Виртуальная машина сначала вызывает Java public static void main() , что приводит к выделению дополнительной памяти.

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

  • Применяется для инициализации статического члена;
  • Выполняется перед методом main во время загрузки класса.

Пример статического блока

Вопрос: можно ли выполнить программу без метода main()?

Ответ : да, один из способов — применение модификатора static в Java , но в предыдущей версии JDK , а не в JDK 1.7 .

В JDK7 и выше вывод будет следующим:

Данная публикация представляет собой перевод статьи « Java static keyword » , подготовленной дружной командой проекта Интернет-технологии.ру

Статический метод принадлежит классу, а нестатический метод принадлежит объекту класса. Статические методы полезны, если у вас есть только один экземпляр, в котором вы собираетесь использовать этот метод, и вам не нужны несколько копий (объектов). Нестатические методы используются, если вы собираетесь использовать свой метод для создания нескольких копий.

Static — это ключевое слово в Java. Мы не можем создать имя класса или пакета с ключом static. В Java static может быть использовано в четырех случаях:

Читайте также:  Ipad не синхронизируется с itunes

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

В Java мы можем использовать ключевое слово static в переменной уровня класса. Статическая переменная класса и не принадлежит к объекту/экземпляру класса. Так, статические переменные являются общими для всех экземпляров объекта, они не потоко-безопасные. Обычно статические переменные используются с ключевым словом final для общих ресурсов или констант, которые могут быть использованы всеми объектами. Если статическая переменная не является private, то мы сможем получить к ней доступ следующим способом: ClassName.VARIABLENAME

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

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

Adblock detector