Учебники

29) Статические переменные

Статика может быть:

  1. Статические переменные
  2. Статические Методы
  3. Статические блоки кода.

Давайте сначала посмотрим на статические переменные и статические методы.

  • Одна копия для общего доступа всем экземплярам класса
  • Статическая переменная может быть доступна напрямую по имени класса и не нуждается в каком-либо объекте

Синтаксис:

<class-name>.<variable-name>
  • Статический метод может вызывать только другие статические методы и не может вызывать нестатический метод из него.
  • Статический метод может быть доступен напрямую по имени класса и не нуждается в каком-либо объекте
  • Статический метод не может ссылаться на ключевые слова 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) Ожидаемый результат показать ниже

Статические методы и переменные Java

На следующей диаграмме показано, как создаются ссылочные переменные и объекты и как к статическим переменным получают доступ различные экземпляры.

Статические методы и переменные Java

Шаг 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 «.
 

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