Předpoklad : statické proměnné, klíčové slovo final
Statická proměnná: Když se hodnota proměnné nemění, pak není dobré volit proměnnou instance. V té době můžeme k této proměnné přidat modifikátor static. Kdykoli deklarujeme proměnnou jako statickou, pak se na úrovni třídy vytvoří jediná proměnná, která je sdílena s objekty. Jakákoli změna v této statické proměnné se promítne do operací s ostatními objekty. Pokud nebudeme statickou proměnnou inicializovat, pak ve výchozím nastavení poskytne JVM pro statickou proměnnou výchozí hodnotu.
Pokud ale deklarujeme statickou proměnnou s modifikátorem final, pak bychom měli dbát na následující konvence:
- Deklarování proměnných pouze jako statických může vést ke změně jejich hodnot jednou nebo více instancemi třídy, ve které je deklarována.
 - Deklarování jako statických final pomůže vytvořit KONSTANCI. Existuje pouze jedna kopie proměnné, kterou nelze znovu inicializovat.
 
Důležité body o statické proměnné final:
-  Inicializace proměnné Povinná : Pokud je statická proměnná deklarována jako final, pak musíme provést inicializaci explicitně, ať už ji používáme nebo ne, a JVM nebude poskytovat žádnou výchozí hodnotu pro statickou proměnnou final.
classTest {finalstaticintx;publicstaticvoidmain(String args){}}Výstup:
error: variable x not initialized in the default constructor
 -  Inicializace před načtením třídy : U finální statické proměnné bychom měli povinně provést inicializaci před dokončením načítání třídy. Finální statickou proměnnou můžeme inicializovat v okamžiku deklarace.
classTest {finalstaticintx =10;publicstaticvoidmain(String args){System.out.println(x);}}Výstup:
10
 -  Inicializace uvnitř statického bloku : Můžeme také inicializovat finální statickou proměnnou uvnitř statického bloku, protože bychom měli inicializovat finální statickou proměnnou před třídou a víme, že statický blok se provádí před metodou main().
classTest {finalstaticintx;static{x =10;}publicstaticvoidmain(String args){System.out.println(x);}}Výstup:
10
 
Kromě výše uvedených metod, pokud se pokusíme inicializovat finální statickou proměnnou kdekoli jinde, pak dojde k chybě při kompilaci.
class Test {   final static int x;   public static void m()   {   x = 10;   }   public static void main(String args)   {   System.out.println(x);   }  } Výstup:
error: cannot assign a value to final variable x
Implementace finální statické proměnné
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);   }  } Výstup:
error: cannot assign a value to final variable company
Na tomto článku se podílel Bishal Kumar Dubey. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected]. Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.