Variable statique en Java :Qu'est-ce qu'un bloc statique et une méthode [Exemple]
Le statique peut être :
- Variables statiques
- Méthodes statiques
- Blocs de code statiques.
Examinons d'abord les variables statiques et les méthodes statiques.
Qu'est-ce qu'une variable statique en Java ?
Variable statique en 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 en Java ?
Méthode statique en 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 appeler une méthode non statique à partir d'elle.
- Une méthode statique est accessible directement par le nom de la classe et n'a besoin d'aucun objet
- Une méthode statique ne peut en aucun cas faire référence à des mots clés "ceci" 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 en tant que démo Java .
Étape 3) Le résultat attendu est affiché ci-dessous
Le diagramme suivant montre comment les variables de référence et les objets sont créés et comment les variables statiques sont accessibles par les différentes instances.
Étape 4) Il est possible d'accéder à une variable statique depuis l'extérieur de la classe en utilisant la syntaxe ClassName.Variable_Name . Décommentez les lignes # 7 &8 . Enregistrer, compiler et exécuter. 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 &27 . Enregistrer, compiler et exécuter.
error: non-static variable a cannot be referenced from a static context a++;
Étape 6) Erreur = ? En effet, 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 en Java ?
Le bloc statique est un bloc d'instructions à l'intérieur d'une classe Java qui sera exécuté lorsqu'une classe est chargée pour la première fois dans la JVM. Un bloc statique aide à initialiser les membres de données statiques , tout comme les constructeurs aident à initialiser les membres d'instance.
class Test{ static { //Code goes here } }
Le programme suivant est l'exemple du 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
Java