Sobes.tech
Junior

Co oznacza słowo kluczowe 'static' w Java?

sobes.tech AI

Odpowiedź od AI

static w Javie jest używany do deklarowania elementów należących do klasy, a nie do konkretnego egzemplarza obiektu.

Słowo kluczowe może być stosowane do:

  • Zmienne (pola):
    • Kopia zmiennej istnieje dla całej klasy, niezależnie od liczby utworzonych egzemplarzy.
    • Do uzyskania dostępu można użyć nazwy klasy (np. ClassName.staticVariable).
    // Przykład zmiennej statycznej
    public class MyMath {
        public static final double PI = 3.14159;
        // Dostęp: MyMath.PI
    }
    
  • Metody:
    • Metoda należy do klasy, a nie do konkretnego obiektu.
    • Może być wywołana przez nazwę klasy (np. ClassName.staticMethod()).
    • Nie ma dostępu do niestatycznych członków klasy (zmiennych lub metod), ponieważ są one powiązane z egzemplarzem.
    // Przykład metody statycznej
    public class Calculator {
        public static int add(int a, int b) {
            return a + b;
        }
        // Wywołanie: Calculator.add(5, 3)
    }
    
  • Bloki inicjalizacyjne:
    • Wykonuje się raz podczas ładowania klasy do JVM.
    • Używany do inicjalizacji pól statycznych lub wykonywania innych działań związanych z klasą.
    // Przykład bloku statycznego
    public class DataInitializer {
        static {
            // Kod wykonywany podczas ładowania klasy
            System.out.println("DataInitializer class loaded.");
        }
    }
    
  • Klasy wewnętrzne (inner/nested classes):
    • Statyczna klasa wewnętrzna zachowuje się jak klasa na poziomie wyższym, z tym że znajduje się wewnątrz innej klasy.
    • Nie wymaga tworzenia instancji klasy zewnętrznej, aby się do niej odwołać.
    • Ma dostęp tylko do statycznych członków klasy zewnętrznej.
    // Przykład statycznej klasy wewnętrznej
    public class OuterClass {
        static class StaticInnerClass {
            // Pola i metody statycznej klasy wewnętrznej
        }
    }
    // Dostęp: OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
    

Użycie static pomaga w tworzeniu klas narzędziowych, przechowywaniu wspólnych danych i zarządzaniu stanem na poziomie klasy.