Que signifie statique en Java

Rashmi Patidar 12 octobre 2023
  1. Utilisation du mot-clé static avec les variables membres en Java
  2. Utilisation du mot-clé static avec les fonctions membres en Java
  3. Utilisation du mot-clé static dans un bloc en Java
Que signifie statique en Java

En langage Java, static est un mot-clé qui peut avoir son usage à divers endroits. Le mot-clé static est utilisé avec une variable membre, des fonctions membres, des blocs et des classes imbriquées. L’application de mots-clés statiques est là où nous ne voulons pas créer une nouvelle instance à chaque fois. Au lieu de cela, nous l’utilisons aux endroits où la copie unique est partagée au sein de la classe. Les variables statiques sont stockées dans la mémoire de tas, qui est un type de mémoire permanente.

Utilisation du mot-clé static avec les variables membres en Java

Le bloc de code explique en quoi la variable statique est différente des variables non statiques.

public class StaticVariableUsage {
  public static void main(String[] args) {
    InnerClass in = new InnerClass();
    InnerClass in1 = new InnerClass();

    InnerClass2 in2 = new InnerClass2();
    InnerClass2 in3 = new InnerClass2();
  }

  static class InnerClass {
    static int var4 = 0;
    InnerClass() {
      var4++;
      System.out.println("static variable : " + var4);
    }
  }

  static class InnerClass2 {
    int var5 = 0;
    InnerClass2() {
      var5++;
      System.out.println("non-static variable : " + var5);
    }
  }
}

Dans le bloc de code ci-dessus, il y a une classe publique nommée la classe StaticVariableUsage. Il a une méthode statique et deux classes internes. La classe interne nommée InnerClass a une variable entière statique var4 et est initiée avec zéro. La classe a un constructeur qui incrémente la variable entière statique et imprime sa valeur.

Une autre classe interne porte le nom InnerClass2 et contient une variable non statique var5. Cette classe a également un constructeur qui incrémente la variable non statique et imprime sa valeur.

Passant à la méthode main, ici, InnerClass et InnerClass2 sont instanciés deux fois. L’analyse peut être dérivée lorsque l’appel du constructeur se produit, un objet est instancié avec un nouveau mot-clé.

Comme le dit la sortie, la variable statique est initiée et est préservée. La valeur est incrémentée pour la première fois et imprime la valeur comme 1. La prochaine fois, lorsque nous créons une autre instance, le constructeur est à nouveau appelé. Mais la variable statique n’est pas réinitialisée à zéro à nouveau. Au lieu de cela, la valeur précédemment stockée est incrémentée, ce qui donne à la variable statique la valeur deux.

De même, lorsqu’une instance de InnerClass2 est créée, chaque fois que la variable non statique est initialisée à la valeur 0. Il imprime donc la valeur 1 en sortie les deux fois.

static variable : 1
static variable : 2
non-static variable : 1
non-static variable : 1

Utilisation du mot-clé static avec les fonctions membres en Java

Nous avons une classe externe nommée StaticFunctionUsage qui contient l’autre classe interne dans la classe ci-dessous. InnerClass a une fonction statique. Et une autre classe interne nommée InnerClass1 a une méthode non statique.

Maintenant, en passant à la méthode main, on voit que la fonction statique est directement accessible avec le nom de la classe. Nous n’avons pas à instancier l’objet InnerClass. De même, lorsque nous essayons d’accéder à la fonction non statique function1 avec le nom de la classe, une erreur de compilation est renseignée. Si nous voulons accéder à la fonction, l’instance de classe doit être créée, que nous avons créée avec le nom de variable in. L’utilisation de la variable est d’appeler function1 et est une instruction valide.

public class StaticFunctionUsage {
  public static void main(String[] args) {
    InnerClass.function();
    // InnerClass1.function1();
    InnerClass1 in = new InnerClass1();
    in.function1();
  }

  static class InnerClass {
    static void function() {
      System.out.println("In the static function");
    }
  }

  static class InnerClass1 {
    void function1() {
      System.out.println("In the non-static function");
    }
  }
}

La sortie du bloc de code ci-dessus est comme ci-dessous.

In the static function
In the non-static function

Utilisation du mot-clé static dans un bloc en Java

L’utilisation de blocs statiques est d’initialiser des variables statiques. L’exécution du programme commence par la méthode main. Si un bloc statique est présent dans une classe, il s’exécute avant l’exécution de la méthode principale.

Vous trouverez ci-dessous le code expliquant le bloc statique.

public class StaticBlock {
  static {
    System.out.println("In the static block");
  }

  public static void main(String[] args) {
    System.out.println("In the main method");
  }
}

La sortie du code est comme ci-dessous. Comme nous pouvons le voir, l’instruction dans le bloc statique est d’abord exécutée.

In the static block
In the main method
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn