Statique en Java:
Static est un modificateur sans accès. Le mot-clé statique appartient à la classe que l'instance de la classe. peut être utilisé pour attacher une variable ou une méthode à une classe.
Le mot-clé statique PEUT être utilisé avec:
Méthode
Variable
Classe imbriquée dans une autre classe
Bloc d'initialisation
NE PEUT PAS être utilisé avec:
Classe (non imbriquée)
Constructeur
Interfaces
Méthode classe interne locale (différence puis classe imbriquée)
Méthodes de classe interne
Variables d'instance
Variables locales
Exemple:
Imaginez l'exemple suivant qui a une variable d'instance nommée count qui est incrémentée dans le constructeur:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Production:
1 1 1
Puisque la variable d'instance obtient la mémoire au moment de la création de l'objet, chaque objet aura la copie de la variable d'instance, si elle est incrémentée, elle ne se reflétera pas sur les autres objets.
Maintenant, si nous changeons le nombre de variables d'instance en nombre statique, le programme produira une sortie différente:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Production:
1 2 3
Dans ce cas, la variable statique n'obtiendra la mémoire qu'une seule fois, si un objet modifie la valeur de la variable statique, il conservera sa valeur.
Statique avec finale:
La variable globale qui est déclarée finale et statique reste inchangée pour toute l'exécution. Parce que, les membres statiques sont stockés dans la mémoire de classe et ils ne sont chargés qu'une seule fois dans l'exécution entière. Ils sont communs à tous les objets de la classe. Si vous déclarez des variables statiques comme finales, aucun des objets ne peut changer leur valeur car elle est finale. Par conséquent, les variables déclarées comme finales et statiques sont parfois appelées constantes. Tous les champs des interfaces sont appelés constantes, car ils sont définitifs et statiques par défaut.
Ressource d'image: Statique final