Le mot clé static est utilisé pour construire des méthodes qui existeront indépendamment du fait que des instances de la classe soient générées ou non. Toute méthode qui utilise le mot-clé static est appelée méthode statique.
Caractéristiques de la méthode statique :
- Une méthode statique en Java est une méthode qui fait partie d’une classe plutôt qu’une instance de cette classe.
- Chaque instance d'une classe a accès à la méthode.
- Les méthodes statiques ont accès aux variables de classe (variables statiques) sans utiliser l’objet (instance) de la classe.
- Seules les données statiques sont accessibles par une méthode statique. Il est incapable d'accéder aux données qui ne sont pas statiques (variables d'instance).
- Dans les méthodes statiques et non statiques, les méthodes statiques sont accessibles directement.
Syntaxe pour déclarer la méthode statique :
Access_modifier static void methodName() { // Method body. }> Le nom de la classe peut être utilisé pour appeler ou accéder à des méthodes statiques.
Syntaxe pour appeler une méthode statique :
className.methodName();>
Exemple 1 : La méthode statique n'a pas accès à la variable d'instance
La JVM exécute d'abord la méthode statique, suivie de la création d'instances de classe. Parce qu'aucun objet n'est accessible lorsque la méthode statique est utilisée. Une méthode statique n'a pas accès aux variables d'instance. Par conséquent, une méthode statique ne peut pas accéder à la variable d’instance d’une classe.
Java
// Java program to demonstrate that> // The static method does not have> // access to the instance variable> > import> java.io.*;> > public> class> GFG {> >// static variable> >static> int> a =>40>;> > >// instance variable> >int> b =>50>;> > >void> simpleDisplay()> >{> >System.out.println(a);> >System.out.println(b);> >}> > >// Declaration of a static method.> >static> void> staticDisplay()> >{> >System.out.println(a);> >}> > >// main method> >public> static> void> main(String[] args)> >{> >GFG obj =>new> GFG();> >obj.simpleDisplay();> > >// Calling static method.> >staticDisplay();> >}> }> |
>
>Sortir
40 50 40>
Exemple 2 : dans les méthodes statiques et non statiques, les méthodes statiques sont directement accessibles.
Java
// Java program to demonstrate that> // In both static and non-static methods,> // static methods are directly accessed.> > import> java.io.*;> > public> class> StaticExample {> > >static> int> num =>100>;> >static> String str =>'GeeksForGeeks'>;> > >// This is Static method> >static> void> display()> >{> >System.out.println(>'static number is '> + num);> >System.out.println(>'static string is '> + str);> >}> > >// non-static method> >void> nonstatic()> >{> >// our static method can accessed> >// in non static method> >display();> >}> > >// main method> >public> static> void> main(String args[])> >{> >StaticExample obj =>new> StaticExample();> > >// This is object to call non static function> >obj.nonstatic();> > >// static method can called> >// directly without an object> >display();> >}> }> |
chaîne de concaténation Java
>
>Sortir
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Pourquoi utiliser des méthodes statiques ?
- Pour accéder et modifier des variables statiques et d’autres méthodes statiques non basées sur des objets.
- Les classes utilitaires et d’assistance utilisent fréquemment des méthodes statiques.
Restrictions dans les méthodes statiques :
- Les données membres non statiques ou les méthodes non statiques ne peuvent pas être utilisées par les méthodes statiques, et les méthodes statiques ne peuvent pas appeler directement les méthodes non statiques.
- Dans un environnement statique, this et super ne sont pas autorisés à être utilisés.
Pourquoi est la méthode principale en Java statique?
C’est parce que l’appel d’une méthode statique n’est pas nécessaire pour l’objet. S'il s'agissait d'une fonction non statique, JVM construirait d'abord un objet avant d'appeler la méthode main(), ce qui entraînerait une difficulté supplémentaire d'allocation de mémoire.
Différence entre la méthode statique et la méthode d'instance
| Méthodes d'instance | Méthodes statiques |
|---|---|
| Cela nécessite un objet de la classe. | Cela ne nécessite pas d’objet de la classe. |
| Il peut accéder à tous les attributs d'une classe. | Il ne peut accéder qu'à l'attribut statique d'une classe. |
| Les méthodes sont accessibles uniquement à l’aide d’une référence d’objet. | La méthode n'est accessible que par le nom de la classe. |
| Syntaxe : Objref.methodname() | Syntaxe : className.methodname() |
| C’est un exemple de programmation passe par valeur. | C'est un exemple de programmation passe par référence. |