Una variabile statica è comune a tutte le istanze (o oggetti) della classe perché è una variabile di livello di classe. In altre parole si può dire che solo una singola copia della variabile statica viene creata e condivisa tra tutte le istanze della classe. L’allocazione della memoria per tali variabili avviene solo una volta quando la classe viene caricata in memoria.
Come le variabili possiamo avere blocco statico, metodo statico e classe statica, per leggere su di loro fare riferimento a: parola chiave statica in java.
Sintassi variabile statica
parola chiave statica seguita dal tipo di dati, seguita dal nome della variabile.
static data_type variable_name;
Come ho detto sopra che le variabili statiche sono condivise tra tutte le istanze della classe, sono utili quando abbiamo bisogno di fare gestione della memoria. In alcuni casi vogliamo avere un valore comune per tutte le istanze come la variabile globale, allora è molto meglio dichiararle statiche perché questo può risparmiare memoria (perché solo una singola copia viene creata per le variabili statiche).
Comprendiamo questo con un esempio:
Esempio di variabile statica in Java
class VariableDemo{ static int count=0; public void increment() { count++; } public static void main(String args) { VariableDemo obj1=new VariableDemo(); VariableDemo obj2=new VariableDemo(); obj1.increment(); obj2.increment(); System.out.println("Obj1: count is="+obj1.count); System.out.println("Obj2: count is="+obj2.count); }}
Output:
Obj1: count is=2Obj2: count is=2
Come potete vedere nell’esempio sopra, entrambi gli oggetti stanno condividendo una stessa copia della variabile statica, ecco perché hanno visualizzato lo stesso valore di count.
Esempio 2: Si può accedere alla variabile statica direttamente in un metodo statico
class JavaExample{ static int age; static String name; //This is a Static Method static void disp(){ System.out.println("Age is: "+age); System.out.println("Name is: "+name); } // This is also a static method public static void main(String args) { age = 30; name = "Steve"; disp(); }}
Output:
Age is: 30Name is: Steve
Inizializzazione della variabile statica
- Le variabili statiche sono inizializzate quando la classe viene caricata.
- Le variabili statiche sono inizializzate prima che qualsiasi oggetto di quella classe venga creato.
- Le variabili statiche sono inizializzate prima dell’esecuzione di qualsiasi metodo statico della classe.
I valori predefiniti per le variabili statiche e non statiche sono gli stessi.
interi primitivi(long
, short
ecc.): 0
primitivi a virgola mobile(float
, double
): 0.0
booleano: falso
riferimenti a oggetti: null
Variabili statiche finali
Le variabili statiche finali sono costanti. Diamo un’occhiata al codice qui sotto:
public class MyClass{ public static final int MY_VAR=27;}
Nota: Il nome della variabile costante dovrebbe essere in Maiuscolo! potete usare underscore(_) tra.
1) Il codice sopra verrà eseguito non appena la classe MyClass
viene caricata, prima che il metodo statico venga chiamato e anche prima che qualsiasi variabile statica possa essere accessibile.
2) La variabile MY_VAR
è pubblica, il che significa che qualsiasi classe può usarla. È una variabile statica quindi non avrete bisogno di nessun oggetto di classe per accedervi. E’ finale quindi il valore di questa variabile non può mai essere cambiato nella classe corrente o in qualsiasi altra classe.
Punti chiave:
la variabile finale ha sempre bisogno dell’inizializzazione, se non la inizializzi ti darà un errore di compilazione. dai un’occhiata al seguente esempio-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized