Что значит Static в Java?

Static - это модификатор без доступа. Это означает, что что-то (поле, метод, блок или вложенный класс) связано с типом, а не с каким-либо конкретным экземпляром типа.

Ключевое слово Static можно применить к:

В Java статические методы могут быть вызваны без создания объекта класса.

В обычном случае мы вызываем метод из экземпляра этого класса.

Пример

 
public class TestClass {
  public static void main(String[] args) {
    TestClass tc = new TestClass();// создать экземпляр класса
    tc.ShowMessage(); // вызов метода с использованием экземпляра
  }
  void ShowMessage() {
    System.out.println("Here is the message");
  }
}

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

Пример

 
public class TestClass {
  public static void main(String[] args) {
    ShowMessage(); // вызов без экземпляра creting
  }
  static void ShowMessage() {
    System.out.println("Here is the message using static");
  }
}

В Java статический метод может получить доступ только к статическим переменным класса и вызвать только статические методы класса. Обычно статические методы - это методы утилиты, которые мы хотим раскрывать для использования другими классами без необходимости создания экземпляра. Методы класса часто используются для предоставления глобальных функций для программ Java. Например, методы в пакете Java.lang.Math являются методами класса. Поскольку статические методы также не относятся к определенному экземпляру, они не могут ссылаться на члены экземпляра. Статические члены могут ссылаться только на статические члены.

Особенности статического метода

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

Java Static переменная

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

Например, если у вас есть переменная: private static int stc = 0; и вы увеличиваете его (stc ++) в одном экземпляре, это изменение будет отражено во всех экземплярах. stc теперь будет 1 во всех случаях.

Блок инициализации

Статический инициализатор представляет собой статический {} блок кода внутри класса Java и запускается только за один раз до вызова конструктора или основного метода. Блок кода со статическим модификатором означает инициализатор класса; без статического модификатора блок кода является инициализатором экземпляра.

 
public class TestClass {
  static {
    System.out.println("Hello before main");
  }
}

Он автоматически вызывается, когда класс загружается. Статический блок выполняется один раз в жизненном цикле любой программы, и нет другого способа вызвать его

Однако из Java 7 это больше не работает, даже если он компилируется, при попытке его выполнить появляется следующая ошибка:

 
Main class should contain method: public static void main (String[] args).

Вложенный класс

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

Пример

 
public class OuterClass {
  public static class StaticNestedClass {
  }
  public class NonStaticNestedClass {
  }
}

Чтобы создать объект для статического вложенного класса, используйте следующий синтаксис:

 
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

Главное различие между ними, вы не можете создать экземпляр NonStaticNestedClass без OuterClass, тогда как вы можете создать объект StaticNestedClass независимо.

Разница между статическим вложенным классом и не статическим вложенным классом

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

Класс Nonstatic Nested неявно связан с окружающим экземпляром содержащего класса, это означает, что можно вызвать методы и получить доступ к окружающим экземплярам. Одним распространенным применением нестатического вложенного класса является определение класса адаптера.

Источник: http://net-informations.com/Java/cJava/static.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector