Статическая переменная в Java
- Статические переменные
- Статические методы
- Статические блоки кода.
Давайте сначала рассмотрим статические переменные и статические методы.
Что такое статическая переменная в Java?
Статическая переменная в Java — это переменная, принадлежащая классу и инициализируемая только один раз в начале выполнения. Это переменная, которая принадлежит классу, а не объекту (экземпляру). Статические переменные инициализируются только один раз, в начале выполнения. Эти переменные будут инициализированы первыми, перед инициализацией любых переменных экземпляра.
- Единая копия, которая будет использоваться всеми экземплярами класса
- Доступ к статической переменной можно получить напрямую по имени класса, и ей не нужен какой-либо объект.
Синтаксис:
<class-name>.<variable-name>
Что такое статический метод Java?
Статический метод в Java — это метод, принадлежащий классу, а не объекту. Статический метод может обращаться только к статическим данным. Это метод, принадлежащий классу, а не объекту (экземпляру). Статический метод может обращаться только к статическим данным. Он не может получить доступ к нестатическим данным (переменные экземпляра).
- Статический метод может вызывать только другие статические методы и не может вызывать из него нестатический метод.
- Доступ к статическому методу можно получить непосредственно по имени класса, и ему не нужен какой-либо объект.
- Статический метод никоим образом не может ссылаться на ключевые слова «this» или «super».
Синтаксис:
<class-name>.<method-name>
Примечание: Основной метод является статическим, поскольку он должен быть доступен для запуска приложения до того, как произойдет какое-либо создание экземпляра.
Давайте изучим нюансы статических ключевых слов, выполнив несколько упражнений!
Пример: как вызывать статические переменные и методы
Шаг 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) Доступ к статической переменной можно получить извне класса, используя синтаксис ИмяКласса.Имя_Переменной. Раскомментируйте строки №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»увеличить».
Что такое статический блок 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