Statyczny może być:
- Zmienne statyczne
- Metody statyczne
- Statyczne bloki kodu.
Przyjrzyjmy się najpierw zmiennym statycznym i metodom statycznym.
Co to jest zmienna statyczna w Javie?
Zmienna statyczna w Javie to zmienna należąca do klasy i inicjowana tylko raz na początku wykonania. Jest to zmienna należąca do klasy, a nie do obiektu (instancji). Zmienne statyczne są inicjowane tylko raz, na początku wykonywania. Te zmienne zostaną zainicjalizowane jako pierwsze, przed inicjalizacją jakichkolwiek zmiennych instancji.
- Pojedyncza kopia do współużytkowania 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>.
Co to jest metoda statyczna w Javie?
Metoda statyczna w Javie to metoda należąca 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 ma dostępu do danych niestatycznych (zmiennych instancji).
- Metoda statyczna może wywoływać tylko inne metody statyczne i nie może wywoływać z nich metody niestatycznej.
- Dostęp do metody statycznej można uzyskać bezpośrednio poprzez nazwę klasy i nie wymaga ona żadnego obiektu
- Metoda statyczna i tak nie może odwoływać się do słów kluczowych „this” lub „super”
Składnia:
< class-name>.
Uwaga: główna metoda jest statyczna, ponieważ musi być dostępna, aby aplikacja mogła działać, zanim nastąpi jakakolwiek instancja.
Nauczmy się niuansów statycznych słów kluczowych, wykonując ćwiczenia!
Przykład: jak wywoływać statyczne zmienne i metody
Krok 1) Skopiuj poniższy kod do edytora
Demo klasy publicznej {public static void main (String args []) {Student s1 = nowy Student ();s1.showData ();Student s2 = nowy Student ();s2.showData ();//Student.b++;//s1.showData ();}}class Student {int a; // zainicjowany na zerostatic int b; // inicjowane do zera tylko wtedy, gdy klasa jest ładowana, a nie dla każdego utworzonego obiektu.Student(){// Konstruktor zwiększający zmienną statyczną bb ++;}public void showData () {System.out.println ("Wartość a =" + a);System.out.println ("Wartość b =" + b);}// public static void Increment () {// a ++;//}}
Krok 2) Zapisz i skompiluj kod. Uruchom kod jako, java Demo .
Krok 3) Oczekiwane wyniki przedstawiono poniżej
Poniższy diagram pokazuje, w jaki sposób tworzone są zmienne referencyjne i obiekty oraz jak różne instancje uzyskują dostęp do zmiennych statycznych.
Krok 4) Możliwe jest uzyskanie dostępu do zmiennej statycznej spoza klasy przy użyciu składni nazwaKlasy.nazwa_zmiennej . Odkomentuj wiersz nr 7 i 8. Zapisz, skompiluj i uruchom. Obserwuj wyjście.
Value of a = 0Value of b = 1Value of a = 0Value of b = 2Value of a = 0Value of b = 3Krok 5) Odkomentuj wiersz 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 jest możliwy dostęp do zmiennej instancji „ a ” ze statycznej metody klasy java „ inkrementacja ”.
Co to jest blok statyczny w Javie?
Statyczny blok to blok zestawienia wewnątrz klasy Java, który zostanie wykonany, gdy klasa jest najpierw ładowane do JVM. Blok statyczny pomaga zainicjować statycznych członków danych , podobnie jak konstruktorów pomoc zainicjować członków 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
Demo klasy publicznej {static int a;static int b;static {a = 10;b = 20;}public static void main (String args []) {System.out.println ("Wartość a =" + a);System.out.println ("Wartość b =" + b);}}
otrzymasz następujące dane wyjściowe programu.
Value of a = 10Value of b = 20