Статическая переменная в Java:что такое статический блок и метод [пример]
Статика может быть:
- Статические переменные
- Статические методы
- Статические блоки кода.
Давайте сначала рассмотрим статические переменные и статические методы.
Что такое статическая переменная в 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) Доступ к статической переменной можно получить извне класса, используя синтаксис ИмяКласса.Имя_Переменной. . Раскомментируйте строки # 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
java