Prérequis : variables statiques, mot clé final
Variable statique : Lorsque la valeur d’une variable ne varie pas, alors ce n’est pas un bon choix d’opter pour une variable d’instance. À ce moment-là, nous pouvons ajouter le modificateur statique à cette variable. Lorsque nous déclarons une variable comme statique, une seule variable est créée au niveau de la classe et elle est partagée avec les objets. Tout changement dans cette variable statique se reflète dans les opérations des autres objets. Si nous n’initialiserons pas une variable statique, alors par défaut JVM fournira une valeur par défaut pour la variable statique.
Mais lorsque nous déclarons une variable statique avec le modificateur final, alors nous devons prendre soin des conventions suivantes :
- Déclarer les variables uniquement comme statiques peut conduire à la modification de leurs valeurs par une ou plusieurs instances d’une classe dans laquelle elle est déclarée.
- Les déclarer comme statiques finales vous aidera à créer une CONSTANTE. Il n’existe qu’une seule copie de la variable qui ne peut pas être réinitialisée.
Points importants concernant la variable statique finale :
- Initialisation de la variable Obligatoire : Si la variable statique déclarée comme finale, alors nous devons effectuer l’initialisation explicitement que nous l’utilisions ou non et la JVM ne fournira pas de valeur par défaut pour la variable statique finale.
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
}
Sortie :
error: variable x not initialized in the default constructor
- Initialisation avant le chargement de la classe : Pour une variable statique finale, il est obligatoire d’effectuer l’initialisation avant la fin du chargement de la classe. Nous pouvons initialiser une variable statique finale au moment de la déclaration.
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
Sortie :
10
- Initialiser à l’intérieur d’un bloc statique : Nous pouvons également initialiser une variable statique finale à l’intérieur d’un bloc statique car nous devons initialiser une variable statique finale avant la classe et nous savons que le bloc statique est exécuté avant la méthode main().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Sortie :
10
En dehors des méthodes mentionnées ci-dessus, si nous essayons d’initialiser une variable statique finale ailleurs, alors nous obtiendrons une erreur de compilation.
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Sortie :
error: cannot assign a value to final variable x
Mise en œuvre de la variable statique 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);
}
}
Sortie :
error: cannot assign a value to final variable company
Cet article est contribué par Bishal Kumar Dubey. Si vous aimez GeeksforGeeks et que vous souhaitez contribuer, vous pouvez également écrire un article en utilisant contribute.geeksforgeeks.org ou envoyer votre article par courrier à [email protected]. Voyez votre article apparaître sur la page principale de GeeksforGeeks et aidez d’autres Geeks.