Variable statique dans Java

La statique peut être :

  1. Variables statiques
  2. Méthodes statiques
  3. Blocs de code statiques.

Examinons d'abord les variables statiques et les méthodes statiques.

Qu'est-ce qu'une variable statique dans Java?

Variable statique dans Java est une variable qui appartient à la classe et initialisée une seule fois au début de l'exécution. C'est une variable qui appartient à la classe et non à l'objet (instance). Les variables statiques ne sont initialisées qu'une seule fois, au début de l'exécution. Ces variables seront initialisées en premier, avant l'initialisation de toute variable d'instance.

  • Une seule copie à partager par toutes les instances de la classe
  • Une variable statique est accessible directement par le nom de la classe et n'a besoin d'aucun objet

syntaxe:

<class-name>.<variable-name>

Qu'est-ce que la méthode statique dans Java?

Méthode statique dans Java est une méthode qui appartient à la classe et non à l'objet. Une méthode statique ne peut accéder qu'aux données statiques. C'est une méthode qui appartient à la classe et non à l'objet (instance). Une méthode statique ne peut accéder qu'aux données statiques. Il ne peut pas accéder aux données non statiques (variables d'instance).

  • Une méthode statique ne peut appeler que d’autres méthodes statiques et ne peut pas en appeler une méthode non statique.
  • Une méthode statique est accessible directement par le nom de la classe et ne nécessite aucun objet
  • Une méthode statique ne peut en aucun cas faire référence aux mots-clés « this » ou « super »

syntaxe:

<class-name>.<method-name>

Remarque: La méthode main est statique, car elle doit être accessible pour qu’une application s’exécute, avant toute instanciation.

Apprenons les nuances des mots-clés statiques en faisant quelques exercices !

Exemple : Comment appeler des variables et des méthodes statiques

Étape 1) Copiez le code suivant dans un éditeur

public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}

Étape 2) Enregistrez et compilez le code. Exécutez le code comme, Démo Java.

Étape 3) Le résultat attendu est affiché ci-dessous


Java Méthodes et variables statiques

Le diagramme suivant montre comment les variables et les objets de référence sont créés et comment les variables statiques sont accessibles par les différentes instances.


Java Méthodes et variables statiques

Étape 4) Il est possible d'accéder à une variable statique depuis l'extérieur de la classe en utilisant la syntaxe NomClasse.Nom_Variable. Décommentez les lignes n°7 et 8. Enregistrez, compilez et exécutez. Observez la sortie.

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

Étape 5) Décommentez les lignes 25,26 et 27. Enregistrez, compilez et exécutez.

	 error: non-static variable a cannot be referenced from a static context a++; 

Étape 6) Erreur = ? C'est parce qu'il n'est pas possible d'accéder à la variable d'instance "a" de la méthode de classe statique Java "incrément" .

Qu'est-ce que le bloc statique dans Java?

Les bloc statique est un bloc d'instructions à l'intérieur d'un Java classe qui sera exécutée lorsqu'une classe est chargée pour la première fois dans le JVM. A le bloc statique aide à initialiser les données membres statiques, tout comme les constructeurs aident à initialiser les membres de l'instance.

class Test{
 static {
 //Code goes here
 }
}

Le programme suivant est l'exemple de bloc statique Java.

Exemple : Comment accéder au bloc statique

public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}

vous obtiendrez la sortie suivante du programme.

Value of a = 10
Value of b = 20