Zmienna statyczna w Java

โšก Inteligentne podsumowanie

Zmienna statyczna w Java Naleลผy do klasy, a nie do ลผadnego obiektu, i jest inicjowany jednorazowo podczas ล‚adowania klasy. Pojedyncza, wspรณล‚dzielona kopia obsล‚uguje wszystkie instancje, dostฤ™pne bezpoล›rednio przez nazwฤ™ klasy, bez tworzenia obiektu.

  • ๐Ÿ“ฆ Zmienna statyczna: Naleลผy do klasy, wspรณล‚dzieli jednฤ… kopiฤ™ miฤ™dzy wszystkimi instancjami, inicjowany jednorazowo podczas ล‚adowania.
  • โš™๏ธ Metoda statyczna: Naleลผy do klasy, ma dostฤ™p tylko do danych statycznych i ignoruje this/super.
  • ๐Ÿงฑ Blok statyczny: Uruchamia siฤ™ jednokrotnie, gdy klasa ล‚aduje siฤ™ w celu zainicjowania statycznych elementรณw danych.
  • ๐Ÿ”— Dostฤ™p: Do elementรณw statycznych moลผna dotrzeฤ‡ bezpoล›rednio poprzez ClassName.member bez obiektu.
  • โ›” Ograniczenie: Metoda statyczna nie moลผe odwoล‚ywaฤ‡ siฤ™ bezpoล›rednio do zmiennych niestatycznych (instancyjnych).

Zmienna statyczna w Java

Statyka moลผe byฤ‡:

  1. Zmienne statyczne
  2. Metody statyczne
  3. Bloki statyczne Code.

Przyjrzyjmy siฤ™ najpierw zmiennym statycznym i metodom statycznym.

Czym jest zmienna statyczna Java?

Zmienna statyczna w Java to zmienna naleลผฤ…ca do klasy i inicjowana tylko raz na poczฤ…tku wykonywania. Jest to zmienna naleลผฤ…ca do klasy, a nie do obiektu (instancji). Zmienne statyczne sฤ… inicjowane tylko raz, na poczฤ…tku wykonywania. Zmienne te zostanฤ… zainicjowane jako pierwsze, przed inicjalizacjฤ… zmiennych instancji.

  • Pojedyncza kopia, ktรณra ma byฤ‡ wspรณล‚dzielona przez wszystkie instancje klasy
  • Dostฤ™p do zmiennej statycznej moลผna uzyskaฤ‡ bezpoล›rednio poprzez nazwฤ™ klasy i nie wymaga ona ลผadnego obiektu

Skล‚adnia:

<class-name>.<variable-name>

Na czym polega metoda statyczna Java?

Metoda statyczna w Java jest metodฤ… naleลผฤ…cฤ… do klasy, a nie do obiektu. Metoda statyczna moลผe uzyskaฤ‡ dostฤ™p tylko do danych statycznych. Jest to metoda naleลผฤ…ca do klasy, a nie do obiektu (instancji). Metoda statyczna moลผe uzyskaฤ‡ dostฤ™p tylko do danych statycznych. Nie moลผe uzyskaฤ‡ dostฤ™pu do danych niestatycznych (zmienne instancji).

  • Metoda statyczna moลผe wywoล‚ywaฤ‡ tylko inne metody statyczne i nie moลผe wywoล‚ywaฤ‡ z niej metody niestatycznej.
  • Dostฤ™p do metody statycznej moลผna uzyskaฤ‡ bezpoล›rednio poprzez nazwฤ™ klasy i nie wymaga ona ลผadnego obiektu
  • Metoda statyczna nie moลผe w ลผaden sposรณb odwoล‚ywaฤ‡ siฤ™ do sล‚รณw kluczowych โ€žthisโ€ ani โ€žsuperโ€.

Skล‚adnia:

<class-name>.<method-name>

Uwaga: main jest statyczna, poniewaลผ musi byฤ‡ dostฤ™pna, aby aplikacja mogล‚a dziaล‚aฤ‡, zanim nastฤ…pi jakakolwiek instancja.

Poznajmy niuanse statycznych sล‚รณw kluczowych, wykonujฤ…c kilka ฤ‡wiczeล„!

Przykล‚ad: Jak wywoล‚aฤ‡ zmienne i metody statyczne

Krok 1) Skopiuj poniลผszy kod do edytora

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++;
//}

}

Krok 2) Zapisz i skompiluj kod. Uruchom kod jako Demo Javy.

Krok 3) Oczekiwane wyniki pokazano poniลผej


Java Metody statyczne i zmienne

Poniลผszy diagram pokazuje, w jaki sposรณb tworzone sฤ… zmienne referencyjne i obiekty oraz w jaki sposรณb rรณลผne instancje uzyskujฤ… dostฤ™p do zmiennych statycznych.


Java Metody statyczne i zmienne

Krok 4) Dostฤ™p do zmiennej statycznej moลผna uzyskaฤ‡ spoza klasy za pomocฤ… skล‚adni NazwaKlasy.Nazwa_zmiennej. Odkomentuj liniฤ™ nr 7 i 8. Zapisz, skompiluj i uruchom. Obserwuj wynik.

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

Krok 5) Odkomentuj wiersze 25,26 i 27 . Zapisz, skompiluj i uruchom.

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

Krok 6) Bล‚ฤ…d =? Dzieje siฤ™ tak, poniewaลผ nie moลผna uzyskaฤ‡ dostฤ™pu do zmiennej instancji โ€žaโ€ z metody klasy statycznej Java โ€žprzyrost".

W czym jest blok statyczny Java?

blok statyczny jest blokiem instrukcji wewnฤ…trz a Java klasa, ktรณra zostanie wykonana, gdy klasa zostanie po raz pierwszy zaล‚adowana do FMV, ZA blok statyczny pomaga inicjowaฤ‡ statyczne elementy danych, podobnie jak konstruktory pomagajฤ… inicjowaฤ‡ elementy instancji.

class Test{
 static {
 //Code goes here
 }
}

Poniลผszy program jest przykล‚adem statycznego bloku Java.

Przykล‚ad: Jak uzyskaฤ‡ dostฤ™p do bloku statycznego

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);

 	}
}

otrzymasz nastฤ™pujฤ…cy wynik programu.

Value of a = 10
Value of b = 20

FAQ

Zmienna statyczna naleลผy do klasy i ma jednฤ… wspรณล‚dzielonฤ… kopiฤ™ dla wszystkich obiektรณw. Zmienna instancji naleลผy do kaลผdego obiektu i otrzymuje osobnฤ… kopiฤ™ dla kaลผdej instancji, inicjowanฤ… podczas tworzenia obiektu.

Nie. Metoda statyczna moลผe uzyskaฤ‡ dostฤ™p wyล‚ฤ…cznie do danych statycznych i innych metod statycznych. Odwoล‚anie siฤ™ do zmiennej niestatycznej (instancji) z kontekstu statycznego powoduje bล‚ฤ…d kompilacji, poniewaลผ ลผaden obiekt jeszcze nie istnieje.

Blok statyczny jest uruchamiany jednokrotnie, gdy klasa jest ล‚adowana do JVM po raz pierwszy, przed utworzeniem jakiegokolwiek obiektu lub uruchomieniem metody gล‚รณwnej. Sล‚uลผy do inicjalizacji statycznych elementรณw danych.

Sztuczna inteligencja moลผe analizowaฤ‡ sposรณb wykorzystania pola lub metody i zalecaฤ‡ wartoล›ci statyczne, gdy dane sฤ… udostฤ™pniane wszystkim instancjom lub gdy nie jest potrzebny ลผaden stan instancji.ping Programiล›ci unikajฤ… niepotrzebnych obiektรณw i redukujฤ… zuลผycie pamiฤ™ci.

Tak. Analiza wspomagana przez sztucznฤ… inteligencjฤ™ moลผe sygnalizowaฤ‡ zmienne, statyczne stany powodujฤ…ce problemy z bezpieczeล„stwem wฤ…tkรณw, ukryte zaleลผnoล›ci globalne lub trudnoล›ci w testowaniu, i proponowaฤ‡ bezpieczniejsze alternatywy, takie jak pola instancji lub wstrzykiwanie zaleลผnoล›ci.

Podsumuj ten post nastฤ™pujฤ…co: