Wymagania wstępne : zmienne statyczne, słowo kluczowe final
Static variable: Kiedy wartość zmiennej nie jest zróżnicowana, wtedy nie jest to dobry wybór, aby przejść do zmiennej instancji. W tym czasie możemy dodać modyfikator static do tej zmiennej. Kiedykolwiek zadeklarujemy zmienną jako statyczną, wtedy na poziomie klasy tworzona jest pojedyncza zmienna, która jest współdzielona z obiektami. Każda zmiana w tej zmiennej statycznej odzwierciedla operacje na innych obiektach. Jeśli nie zainicjalizujemy zmiennej statycznej, wtedy domyślnie JVM dostarczy wartość domyślną dla zmiennej statycznej.
Ale kiedy zadeklarujemy zmienną statyczną z modyfikatorem final, wtedy powinniśmy zadbać o następujące konwencje:
- Deklarowanie zmiennych tylko jako statyczne może prowadzić do zmiany ich wartości przez jedną lub więcej instancji klasy, w której jest zadeklarowana.
- Deklarowanie ich jako statyczne final pomoże ci stworzyć CONSTANT. Istnieje tylko jedna kopia zmiennej, która nie może być ponownie zainicjalizowana.
Ważne punkty dotyczące ostatecznej zmiennej statycznej:
- Inicjalizacja zmiennej Obowiązkowa : Jeśli zmienna statyczna zadeklarowana jako ostateczna, to musimy wykonać inicjalizację jawnie, niezależnie od tego, czy jej używamy, czy nie, a JVM nie zapewni żadnej wartości domyślnej dla ostatecznej zmiennej statycznej.
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
}
Wyjście:
error: variable x not initialized in the default constructor
- Inicjalizacja przed załadowaniem klasy : Dla finalnej zmiennej statycznej, obowiązkowo powinniśmy wykonać inicjalizację przed zakończeniem ładowania klasy. Możemy zainicjować ostateczną zmienną statyczną w czasie deklaracji.
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
Wyjście:
10
- Inicjalizacja wewnątrz bloku statycznego : Możemy również zainicjować końcową zmienną statyczną wewnątrz bloku statycznego, ponieważ powinniśmy zainicjować końcową zmienną statyczną przed klasą i wiemy, że blok statyczny jest wykonywany przed metodą main().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Wyjście:
10
Oprócz wyżej wymienionych metod, jeśli spróbujemy zainicjować finalną zmienną statyczną gdziekolwiek indziej, wtedy otrzymamy błąd czasu kompilacji.
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Wyjście:
error: cannot assign a value to final variable x
Implementacja finalnej zmiennej statycznej
class
MainClass {
final
static
String company =
"GFG"
;
String name;
int
rollno;
public
static
void
main(String args)
{
MainClass ob =
new
MainClass();
ob.company =
"Geeksforgeeks"
;
ob.name =
"Bishal"
;
ob.rollno =
007
;
System.out.println(ob.company);
System.out.println(ob.name);
System.out.println(ob.rollno);
}
}
Wyjście:
error: cannot assign a value to final variable company
This article is contributed by Bishal Kumar Dubey. Jeśli podoba Ci się GeeksforGeeks i chciałbyś się przyczynić do jego powstania, możesz również napisać artykuł korzystając z adresu contribute.geeksforgeeks.org lub wysłać go pocztą na adres [email protected]. Zobacz, jak twój artykuł pojawia się na stronie głównej GeeksforGeeks i pomóż innym Geekom.