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.
class
Test {
final
static
int
x;
public
static
void
main(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.
class
Test {
final
static
int
x =
10
;
public
static
void
main(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().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(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.