Variable statique dans Java

⚡ Résumé intelligent

Variable statique dans Java Cette variable appartient à la classe et non à un objet ; elle est initialisée une seule fois lors du chargement de la classe. Une copie unique et partagée sert à toutes les instances, accessibles directement par le nom de la classe sans création d'objet.

  • 📦 Variable statique : Appartient à la classe, partage une seule copie entre toutes les instances, initialisée une seule fois au chargement.
  • ⚙️ Méthode statique : Appartient à la classe, ne peut accéder qu'aux données statiques et ignore this/super.
  • 🧱 Bloc statique : S'exécute une seule fois lors du chargement de la classe afin d'initialiser les membres de données statiques.
  • 🔗 Accès: Accédez directement aux membres statiques via ClassName.member sans objet.
  • ⛔ Restriction: Une méthode statique ne peut pas référencer directement des variables non statiques (d'instance).

Variable statique dans Java

La statique peut être :

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

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

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

Variable statique dans Java Une variable statique appartient à la classe et est initialisée une seule fois, au début de l'exécution. Elle appartient à la classe et non à l'objet (instance). Les variables statiques sont initialisées en premier, avant 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>

À noter: 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?

Le 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

FAQ

Une variable statique appartient à la classe et est partagée par tous les objets. Une variable d'instance appartient à chaque objet et possède une copie distincte pour chaque instance, initialisée lors de la création de l'objet.

Non. Une méthode statique ne peut accéder qu'à des données statiques et à d'autres méthodes statiques. Faire référence à une variable non statique (d'instance) depuis un contexte statique provoque une erreur de compilation, car aucun objet n'existe encore.

Un bloc statique s'exécute une seule fois, lors du premier chargement de la classe dans la JVM, avant la création de tout objet ou l'exécution de la méthode principale. Il sert à initialiser les membres de données statiques.

L'IA peut analyser l'utilisation d'un champ ou d'une méthode et recommander des solutions statiques lorsque les données sont partagées entre toutes les instances ou lorsqu'aucun état d'instance n'est nécessaire.ping Les développeurs évitent les objets inutiles et réduisent l'utilisation de la mémoire.

Oui. L'analyse assistée par l'IA peut signaler les états statiques modifiables qui causent des problèmes de sécurité des threads, des dépendances globales cachées ou des difficultés de test, et suggérer des alternatives plus sûres telles que les champs d'instance ou l'injection de dépendances.

Résumez cet article avec :