Statyczne w Javie:
Statyczny jest modyfikatorem braku dostępu. Statyczne słowo kluczowe należy do klasy niż instancja klasy. może być użyty do dołączenia zmiennej lub metody do klasy.
Statyczne słowo kluczowe MOŻE być używane z:
metoda
Zmienna
Klasa zagnieżdżona w innej klasie
Blok inicjalizacji
NIE MOŻNA używać z:
Klasa (nie zagnieżdżona)
Konstruktor
Interfejsy
Metoda lokalna klasa wewnętrzna (różnica a klasa zagnieżdżona)
Metody klasy wewnętrznej
Zmienne instancji
Zmienne lokalne
Przykład:
Wyobraź sobie następujący przykład, który ma zmienną instancji o nazwie count, która jest zwiększana w konstruktorze:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Wynik:
1 1 1
Ponieważ zmienna instancji otrzymuje pamięć w momencie tworzenia obiektu, każdy obiekt będzie miał kopię zmiennej instancji, jeśli zostanie zwiększona, nie będzie odzwierciedlała innych obiektów.
Teraz, jeśli zmienimy liczbę zmiennych instancji na statyczną, wówczas program wygeneruje inne dane wyjściowe:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Wynik:
1 2 3
W takim przypadku zmienna statyczna pobierze pamięć tylko raz, jeśli dowolny obiekt zmieni wartość zmiennej statycznej, zachowa swoją wartość.
Statyczne z ostatecznym:
Zmienna globalna zadeklarowana jako ostateczna i statyczna pozostaje niezmieniona dla całego wykonania. Ponieważ elementy statyczne są przechowywane w pamięci klas i są ładowane tylko raz podczas całego wykonania. Są wspólne dla wszystkich obiektów klasy. Jeśli zadeklarujesz zmienne statyczne jako końcowe, żaden z obiektów nie będzie mógł zmienić ich wartości, ponieważ jest ona ostateczna. Dlatego zmienne zadeklarowane jako ostateczne i statyczne są czasami nazywane stałymi. Wszystkie pola interfejsów są nazywane stałymi, ponieważ domyślnie są one ostateczne i statyczne.
Zasób obrazu: Final Static