Mot-clé statique Java (avec exemples)

Dans ce didacticiel, nous en apprendrons davantage sur le mot-clé statique Java ainsi que sur les méthodes statiques, les variables statiques et les blocs statiques à l'aide d'exemples.

Qu'est-ce qu'un mot-clé statique en Java?

En Java, si nous voulons accéder aux membres de la classe, nous devons d'abord créer une instance de la classe. Mais il y aura des situations où nous souhaitons accéder aux membres de la classe sans créer de variables.

Dans ces situations, nous pouvons utiliser le staticmot - clé en Java. Si nous voulons accéder aux membres de la classe sans créer une instance de la classe, nous devons déclarer les membres de la classe statiques.

La Mathclasse en Java a presque tous ses membres statiques. Ainsi, nous pouvons accéder à ses membres sans créer d'instances de la classe Math. Par exemple,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Sortie :

 Valeur absolue de -12 = 12 Valeur de PI = 3,141592653589793 Valeur de E = 2,718281828459045 2 2 = 4,0

Dans l'exemple ci-dessus, nous n'avons créé aucune instance de la Mathclasse. Mais nous pouvons accéder à ses méthodes: abs()et pow()et aux variables: PIet E.

C'est possible car les méthodes et les variables de la Mathclasse sont statiques.

Méthodes statiques

Les méthodes statiques sont également appelées méthodes de classe. C'est parce qu'une méthode statique appartient à la classe plutôt qu'à l'objet d'une classe.

Et nous pouvons invoquer des méthodes statiques directement en utilisant le nom de la classe. Par exemple,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Ici, nous pouvons voir que la méthode statique est accessible directement à partir d'autres classes en utilisant le nom de la classe.

Dans chaque programme Java, nous avons déclaré la mainméthode static. Cela est dû au fait que pour exécuter le programme, la machine virtuelle Java doit être capable d'appeler la méthode principale pendant la phase initiale où aucun objet n'existe dans la mémoire.

Exemple 1: Méthodes Java statiques et non statiques

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Sortie :

 2 * 2 = 4 2 + 3 = 5

Dans le programme ci-dessus, nous avons déclaré une méthode non statique nommée multiply()et une méthode statique nommée add()à l'intérieur de la classe StaticTest.

À l'intérieur de la classe Main, nous pouvons voir que nous appelons la méthode non statique en utilisant l'objet de la classe ( st.multiply(2, 2)). Cependant, nous appelons la méthode statique en utilisant le nom de classe ( StaticTest.add(2, 3)).

Variables statiques

En Java, lorsque nous créons des objets d'une classe, chaque objet aura sa propre copie de toutes les variables de la classe. Par exemple,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Ici, les objets test1 et test2 auront des copies séparées de la variable age. Et, ils sont différents les uns des autres.

Cependant, si nous déclarons une variable statique, tous les objets de la classe partagent la même variable statique. C'est parce que, comme les méthodes statiques, les variables statiques sont également associées à la classe. Et nous n'avons pas besoin de créer des objets de la classe pour accéder aux variables statiques. Par exemple,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Ici, nous pouvons voir que nous accédons à la variable statique depuis l'autre classe en utilisant le nom de la classe.

Exemple 2: Variables Java statiques et non statiques

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Sortie :

 min + 1 = 6 max + 1 = 11

Dans le programme ci-dessus, nous avons déclaré une variable non statique nommée min et une variable statique nommée max dans la classe Test.

Dans la classe Main, nous pouvons voir que nous appelons la variable non statique en utilisant l'objet de la classe ( obj.min + 1). Cependant, nous appelons la variable statique en utilisant le nom de classe ( Test.max + 1).

Remarque : les variables statiques sont rarement utilisées en Java. Au lieu de cela, les constantes statiques sont utilisées. Ces constantes statiques sont définies par static finalmot-clé et représentées en majuscules. C'est pourquoi certaines personnes préfèrent également utiliser des majuscules pour les variables statiques.

Accéder aux variables et méthodes statiques au sein de la classe

Nous accédons à la variable statique depuis une autre classe. Par conséquent, nous avons utilisé le nom de la classe pour y accéder. Cependant, si nous voulons accéder au membre statique depuis l'intérieur de la classe, il est accessible directement. Par exemple,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Sortie :

 L'âge est de 30 ans Méthode statique

Ici, nous pouvons accéder directement à la variable statique et à la méthode sans utiliser le nom de la classe. C'est parce que les variables et méthodes statiques sont par défaut publiques. Et, puisque nous accédons à partir de la même classe, nous n'avons pas à spécifier le nom de la classe.

Blocs statiques

En Java, des blocs statiques sont utilisés pour initialiser les variables statiques. Par exemple,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Ici, nous pouvons voir que nous avons utilisé un bloc statique avec la syntaxe:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Et enfin, les instructions d'impression à l'intérieur de la méthode display()sont exécutées.

Classe statique imbriquée

En Java, nous pouvons déclarer une classe dans une autre classe. Ces classes sont appelées classes imbriquées. Les classes imbriquées sont de 2 types:

  • Classes imbriquées statiques
  • Classes imbriquées non statiques

Par exemple,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

Pour en savoir plus, visitez la classe imbriquée Java.

Articles intéressants...