Что значит 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 являются методами класса. Поскольку статические методы также не относятся к определенному экземпляру, они не могут ссылаться на члены экземпляра. Статические члены могут ссылаться только на статические члены.
Особенности статического метода
- Статический метод - это метод, который принадлежит классу, а не экземпляру (объекту) li >
- Статический метод может быть вызван без необходимости создания экземпляра класса
- Статический метод может вызывать только другие статические методы и не может вызывать нестатический метод из него
- Статический метод может получить доступ к члену статических данных и может изменить его значение.
- Статический метод не может ссылаться на это или супер-ключевые слова в любом случае
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 неявно связан с окружающим экземпляром содержащего класса, это означает, что можно вызвать методы и получить доступ к окружающим экземплярам. Одним распространенным применением нестатического вложенного класса является определение класса адаптера.