Статична променлива в Java
⚡ Умно обобщение
Статична променлива в Java принадлежи на класа, а не на който и да е обект, и се инициализира веднъж при зареждането на класа. Едно споделено копие обслужва всички екземпляри, достъпни директно чрез името на класа, без да се създава обект.

Статиката може да бъде:
- Статични променливи
- Статични методи
- Статични блокове от Code.
Нека първо да разгледаме статичните променливи и статичните методи.
В какво е статичната променлива Java?
Статична променлива в Java е променлива, която принадлежи на класа и се инициализира само веднъж в началото на изпълнението. Това е променлива, която принадлежи на класа, а не на обект (инстанция). Статичните променливи се инициализират само веднъж, в началото на изпълнението. Тези променливи ще бъдат инициализирани първи, преди инициализацията на променливите на инстанция.
- Едно копие, което да се споделя от всички екземпляри на класа
- Статичната променлива може да бъде достъпна директно от името на класа и не се нуждае от обект
Синтаксис:
<class-name>.<variable-name>
В какво е статичен метод Java?
Статичен метод в Java е метод, който принадлежи на класа, а не на обекта. Статичният метод има достъп само до статични данни. Това е метод, който принадлежи на класа, а не на обекта (инстанция). Статичният метод има достъп само до статични данни. Няма достъп до нестатични данни (инстанционни променливи).
- Статичният метод може да извиква само други статични методи и не може да извиква нестатичен метод от него.
- Статичният метод може да бъде достъпен директно от името на класа и не се нуждае от обект
- Статичният метод не може да се отнася до „това“ или „супер“ ключови думи във всеки случай
Синтаксис:
<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 “нарастване".
В какво е статичен блок Java?
- статичен блок е блок от изявление вътре в a 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


