Prequisito: variabili statiche, parola chiave finale
Variabile statica: Quando il valore di una variabile non è variabile, allora non è una buona scelta andare per la variabile di istanza. In quel momento possiamo aggiungere il modificatore statico a quella variabile. Ogni volta che dichiariamo una variabile come statica, allora a livello di classe viene creata una singola variabile che è condivisa con gli oggetti. Qualsiasi cambiamento in quella variabile statica si riflette sulle operazioni degli altri oggetti. Se non inizializziamo una variabile statica, allora per default la JVM fornirà un valore predefinito per la variabile statica.
Ma quando dichiariamo una variabile statica con il modificatore finale allora dovremmo fare attenzione alle seguenti convenzioni:
- Dichiarare le variabili solo come statiche può portare al cambiamento dei loro valori da una o più istanze di una classe in cui è dichiarata.
- Dichiararle come statiche finali vi aiuterà a creare una COSTANTE. Esiste solo una copia della variabile che non può essere reinizializzata.
Punti importanti sulla variabile statica finale:
- Inizializzazione della variabile Obbligatoria: se la variabile statica dichiarata come finale, allora dobbiamo eseguire l’inizializzazione esplicitamente sia che la stiamo usando o meno e la JVM non fornirà alcun valore predefinito per la variabile statica finale.
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
}
Output:
error: variable x not initialized in the default constructor
- Inizializzazione prima del caricamento della classe: Per la variabile statica finale, è obbligatorio eseguire l’inizializzazione prima del completamento del caricamento della classe. Possiamo inizializzare una variabile statica finale al momento della dichiarazione.
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
Output:
10
- Inizializzare all’interno di un blocco statico: Possiamo anche inizializzare una variabile statica finale all’interno di un blocco statico perché dovremmo inizializzare una variabile statica finale prima della classe e sappiamo che il blocco statico viene eseguito prima del metodo main().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Output:
10
Oltre ai metodi sopra menzionati, se cerchiamo di inizializzare una variabile statica finale da qualche altra parte, otterremo un errore di compilazione.
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Output:
error: cannot assign a value to final variable x
Implementazione della variabile statica finale
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);
}
}
Output:
error: cannot assign a value to final variable company
Questo articolo è stato contribuito da Bishal Kumar Dubey. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geeks.