GeeksforGeeks

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:

  1. 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
  2. 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
  3. 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.