Статика может быть:
Давайте сначала посмотрим на статические переменные и статические методы.
Что такое статическая переменная в Java?
Статическая переменная в Java — это переменная, которая принадлежит классу и инициализируется только один раз в начале выполнения. Это переменная, которая принадлежит классу, а не объекту (экземпляру). Статические переменные инициализируются только один раз, в начале выполнения. Эти переменные будут инициализированы в первую очередь, до инициализации любых переменных экземпляра.
- Одна копия для общего доступа всем экземплярам класса
- Статическая переменная может быть доступна напрямую по имени класса и не нуждается в каком-либо объекте
Синтаксис:
<class-name>.<variable-name>
Что такое статический метод в Java?
Статический метод в Java — это метод, который принадлежит классу, а не объекту. Статический метод может получить доступ только к статическим данным. Это метод, который принадлежит классу, а не объекту (экземпляру). Статический метод может получить доступ только к статическим данным. Он не может получить доступ к нестатическим данным (переменным экземпляра).
- Статический метод может вызывать только другие статические методы и не может вызывать нестатический метод из него.
- Статический метод может быть доступен напрямую по имени класса и не нуждается в каком-либо объекте
- Статический метод не может ссылаться на ключевые слова this или super в любом случае
Синтаксис:
<class-name>.<method-name>
Примечание: метод main является статическим, поскольку он должен быть доступен для запуска приложения до того, как произойдет его создание.
Давайте узнаем нюансы статических ключевых слов, выполняя некоторые упражнения!
Пример: как вызывать статические переменные и методы
Шаг 1) Скопируйте следующий код в редактор
public class Demo{ public static void main(String args[]){ Student s1 = new Student(); s1.showData(); Student s2 = new Student(); s2.showData(); //Student.b++; //s1.showData(); } } class Student { int a; //initialized to zero static int b; //initialized to zero only when class is loaded not for each object created. Student(){ //Constructor incrementing static variable b b++; } public void showData(){ System.out.println("Value of a = "+a); System.out.println("Value of b = "+b); } //public static void increment(){ //a++; //} }
Шаг 2) Сохраните и скомпилируйте код. Запустите код как, Java демо .
Шаг 3) Ожидаемый результат показать ниже
На следующей диаграмме показано, как создаются ссылочные переменные и объекты и как к статическим переменным получают доступ различные экземпляры.
Шаг 4) Можно получить доступ к статической переменной извне класса, используя синтаксис ClassName.Variable_Name . Раскомментируйте строки № 7 и 8. Сохранить, скомпилировать и запустить. Соблюдайте вывод.
Value of a = 0 Value of b = 1 Value of a = 0 Value of b = 2 Value of a = 0 Value 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 { static int a; static int b; static { a = 10; b = 20; } public static void main(String args[]) { System.out.println("Value of a = " + a); System.out.println("Value of b = " + b); } }
вы получите следующий вывод программы.
Value of a = 10 Value of b = 20