Статична змінна в Java

⚡ Розумний підсумок

Статична змінна в Java належить класу, а не будь-якому об'єкту, та ініціалізується один раз під час завантаження класу. Одна спільна копія обслуговує всі екземпляри, доступні безпосередньо через ім'я класу без створення об'єкта.

  • 📦 Статична змінна: Належить до класу, використовує одну копію для всіх екземплярів, ініціалізується один раз під час завантаження.
  • ️ Статичний метод: Належить до класу, може отримувати доступ лише до статичних даних та ігнорує this/super.
  • 🧱 Статичний блок: Виконується один раз, коли клас завантажується для ініціалізації статичних членів даних.
  • 🔗 Доступ: Отримувати доступ до статичних членів безпосередньо через ClassName.member без об'єкта.
  • ⛔ Обмеження: Статичний метод не може безпосередньо посилатися на нестатичні (екземплярові) змінні.

Статична змінна в Java

Статика може бути:

  1. Статичні змінні
  2. Статичні методи
  3. Статичні блоки 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) Очікуваний результат показано нижче


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 і XNUMX. Збережіть, скомпілюйте та запустіть.

	 error: non-static variable a cannot be referenced from a static context a++; 

Крок 6) Помилка = ? Це тому, що неможливо отримати доступ до змінної екземпляра "a"з методу статичного класу Java"приріст».

Що таке статичний блок Java?

Команда статичний блок є блоком оператора всередині a Java клас, який буде виконано під час першого завантаження класу в JVM. static block допомагає ініціалізувати члени статичних даних, так само як конструктори допомагають ініціалізувати члени екземпляра.

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

Поширені запитання

Статична змінна належить класу та має одну спільну копію для всіх об'єктів. Змінна екземпляра належить кожному об'єкту та отримує окрему копію для кожного екземпляра, ініціалізовану під час створення об'єкта.

Ні. Статичний метод може отримувати доступ лише до статичних даних та інших статичних методів. Посилання на нестатичну змінну (екземпляр) зі статичного контексту призводить до помилки компіляції, оскільки об'єкта ще не існує.

Статичний блок виконується один раз, коли клас вперше завантажується в JVM, перед створенням будь-якого об'єкта або виконанням основного методу. Він використовується для ініціалізації статичних членів даних.

Штучний інтелект може аналізувати, як використовується поле або метод, і рекомендувати статичний варіант, коли дані спільно використовуються всіма екземплярами або стан екземпляра не потрібен, helping розробники уникають непотрібних об'єктів та зменшують використання пам'яті.

Так. Аналіз за допомогою штучного інтелекту може виявляти змінний статичний стан, який спричиняє проблеми потокобезпеки, приховані глобальні залежності або труднощі з тестуванням, а також пропонувати безпечніші альтернативи, такі як поля екземплярів або впровадження залежностей.

Підсумуйте цей пост за допомогою: