Статика может быть:
- Статические переменные
- Статические методы
- Статические блоки кода.
Давайте сначала посмотрим на статические переменные и статические методы.
Что такое статическая переменная в Java?
Статическая переменная в Java - это переменная, которая принадлежит классу и инициализируется только один раз в начале выполнения. Это переменная, которая принадлежит классу, а не объекту (экземпляру). Статические переменные инициализируются только один раз в начале выполнения. Эти переменные будут инициализированы в первую очередь перед инициализацией любых переменных экземпляра.
- Единая копия, которая будет использоваться всеми экземплярами класса
- Доступ к статической переменной можно получить напрямую по имени класса, и ей не нужен какой-либо объект.
Синтаксис:
< class-name>.
Что такое статический метод в Java?
Статический метод в Java - это метод, который принадлежит классу, а не объекту. Статический метод может обращаться только к статическим данным. Это метод, который принадлежит классу, а не объекту (экземпляру). Статический метод может обращаться только к статическим данным. Он не может получить доступ к нестатическим данным (переменным экземпляра).
- Статический метод может вызывать только другие статические методы и не может вызывать из него нестатический метод.
- Доступ к статическому методу можно получить напрямую по имени класса, и ему не нужен какой-либо объект.
- Статический метод никоим образом не может ссылаться на ключевые слова this или super.
Синтаксис:
< class-name>.
Примечание: метод main является статическим, так как он должен быть доступен для запуска приложения до того, как будет выполнено какое-либо создание экземпляра.
Давайте изучим нюансы статических ключевых слов, выполнив несколько упражнений!
Пример: как вызвать статические переменные и методы
Шаг 1) Скопируйте следующий код в редактор
public class Demo {public static void main (String args []) {Студент s1 = новый Студент ();s1.showData ();Студент s2 = новый Студент ();s2.showData ();//Student.b++;//s1.showData ();}}class Student {int a; // инициализируется нулемстатический int b; // инициализируется нулем только тогда, когда класс загружается не для каждого созданного объекта.Ученик(){// Конструктор увеличивает статическую переменную bb ++;}public void showData () {System.out.println ("Значение a =" + a);System.out.println ("Значение b =" + b);}// public static void increment () {// a ++;//}}
Шаг 2) Сохраните и скомпилируйте код. Запустите код как java Demo .
Шаг 3) Ожидаемый результат показан ниже
На следующей диаграмме показано, как создаются ссылочные переменные и объекты, а различные экземпляры получают доступ к статическим переменным.
Шаг 4) Доступ к статической переменной можно получить извне класса, используя синтаксис ClassName.Variable_Name . Раскомментируйте строки № 7 и 8. Сохранить, скомпилировать и запустить. Наблюдайте за выходом.
Value of a = 0Value of b = 1Value of a = 0Value of b = 2Value of a = 0Value of b = 3Шаг 5) Раскомментируйте строки 25, 26 и 27. Сохранить, скомпилировать и запустить.
error: non-static variable a cannot be referenced from a static context a++;
Шаг 6) Ошибка =? Это связано с тем, что невозможно получить доступ к переменной экземпляра « a » из метода статического класса Java « increment ».
Что такое статический блок в Java?
Статический блок представляет собой блок утверждения внутри класса Java , который будет выполняться , когда класс впервые загружается в JVM. Статический блок помогает инициализировать статические элементы данных , так же , как конструкторы помогают инициализировать член экземпляра.
class Test{static {//Code goes here}}
Следующая программа является примером статического блока Java.
Пример: как получить доступ к статическому блоку
public class Demo {статический int a;статический int b;static {а = 10;b = 20;}public static void main (String args []) {System.out.println ("Значение a =" + a);System.out.println ("Значение b =" + b);}}
вы получите следующий вывод программы.
Value of a = 10Value of b = 20