English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Variabili statiche- Le variabili statiche sono dette anche variabili di classe. Puoi dichiarare una variabile statica utilizzando la parola chiave. Una volta dichiarata una variabile statica, in una classe ci sarà una sola copia, indipendentemente da quante istanze della classe vengano create.
public static int num = 39;
Variabile di istanza-Queste variabili appartengono all'istanza della classe (oggetto). Queste sono dichiarate all'interno della classe ma al di fuori dei metodi. Queste vengono inizializzate quando si istanzia la classe. Possono essere accedute da qualsiasi metodo, costruttore o blocco della classe specifica.
Devi utilizzare l'oggetto per accedere alle variabili di istanza. Ciò significa che per accedere alle variabili di istanza, devi creare un oggetto della classe e utilizzare quell'oggetto, devi accedere a queste variabili.
final-Dopo aver dichiarato una variabile final, non è possibile assegnargli un altro valore.
Le variabili final non inizializzate sono chiamate variabili final vuote. Come le variabili di istanza, le variabili final non vengono inizializzate con un valore predefinito. Pertanto,Devi inizializzare le variabili final dopo la loro dichiarazione.
Ma se provi a utilizzare una variabile vuota nel codice, viene generato un errore di compilazione.
Nel seguente programma Java, la classe Student contiene due variabili final name e age, e non sono state inizializzate.
public class Student { public final String name; public final int age; public void display(){ System.out.println("Nome dello Studente: " + this.name); System.out.println("Eta dell'Studente: " + this.age); } public static void main(String args[]) { new Student().display(); } }
Quando si compila, il programma produce gli errori seguenti.
Student.java:3: errore: la variabile name non è inizializzata nel costruttore predefinito private final String name; ^ Student.java:4: errore: la variabile age non è inizializzata nel costruttore predefinito private final int age; ^ 2 errori
Per risolvere questo problema, devi inizializzare le variabili final dichiarate con -
public class Student { public final String name; public final int age; public Student(){ this.name = "Raju"; this.age = 20; } public void display(){ System.out.println("Nome dello Studente: " + this.name); System.out.println("Eta dell'Studente: " + this.age); } public static void main(String args[]) { new Student().display(); } }
risultato dell'output
Nome dello Studente: Raju Età dello Studente: 20
Allo stesso modo, se dichiari una variabile statica finale senza inizializzarla, viene considerata come variabile statica finale.
Quando una variabile viene dichiarata come variabile statica e finale, può essere inizializzata solo nel blocco statico. Se tenti di inizializzarla in altri luoghi, il compilatore supporrà che tu stia cercando di assegnargli un valore e genererà un errore di compilazione -
class Data{ static final int num; Data(int i){ num = i; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("valore della costante: " + Data.num); } }
ConstantsExample.java:4: errore: impossibile assegnare un valore alla variabile finale num num = i; ^ 1 errore
Di conseguenza, è necessario inizializzare la variabile statica finale nel blocco statico.
Per far funzionare correttamente il programma sopra, devi inizializzare la variabile statica finale nel blocco statico con -
class Data{ static final int num; static{ num = 1000; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("valore della costante: " + Data.num); } }
risultato dell'output
valore della costante: 1000