Zmienna statyczna w Java
- Zmienne statyczne
- Metody statyczne
- Statyczne bloki kodu.
Przyjrzyjmy siฤ najpierw zmiennym statycznym i metodom statycznym.
Czym jest zmienna statyczna Java?
Zmienna statyczna w Java jest zmiennฤ naleลผฤ cฤ do klasy i inicjowanฤ tylko raz na poczฤ tku wykonania. Jest to zmienna naleลผฤ ca do klasy, a nie do obiektu (instancja). Zmienne statyczne sฤ inicjowane tylko raz, na poczฤ tku wykonywania. Zmienne te zostanฤ zainicjowane jako pierwsze, przed inicjalizacjฤ jakichkolwiek 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
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.
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


