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.