logo

Différence entre statique et non statique en Java

Afin de comprendre comment fonctionnent les classes, les variables et les méthodes en Java, il est crucial de comprendre les notions de statique et de non-statique. Les membres non statiques sont liés à des instances de classe spécifiques, tandis que les membres statiques sont connectés à la classe. Dans cette section, nous comparerons les composants Java statiques et non statiques, en soulignant leurs différences et leurs applications potentielles.

Associé à

Statique: Les membres statiques (variables et méthodes) sont associés à la classe elle-même plutôt qu'à des instances individuelles.

Non statique : Les membres non statiques sont spécifiques à chaque instance d'une classe, car ils sont liés aux objets créés à partir de la classe.

Allocation de mémoire

Statique: Les membres statiques se voient allouer de la mémoire une seule fois, au moment du chargement de la classe. Ils sont partagés entre toutes les instances de la classe.

Non statique : Les membres non statiques ont de la mémoire allouée séparément pour chaque instance de la classe. Chaque objet possède sa propre copie de membres non statiques.

Accès

Statique: Les membres statiques sont accessibles directement en utilisant le nom de classe suivi du nom du membre (par exemple, ClassName.memberName). Ils sont accessibles depuis n'importe où dans le programme.

Non statique : Les membres non statiques sont accessibles à l'aide d'une référence d'objet suivie du nom du membre (par exemple, objectReference.memberName). Ils sont spécifiques à une instance particulière de la classe.

Initialisation

Statique: Les membres statiques sont initialisés lorsque la classe est chargée en mémoire, généralement lors du démarrage du programme. L'initialisation n'a lieu qu'une seule fois.

Non statique : Les membres non statiques sont initialisés lorsque chaque instance de la classe est créée, généralement à l'aide du nouveau mot-clé. L'initialisation se produit séparément pour chaque objet.

Portée

Statique: Les membres statiques ont une portée globale et sont accessibles depuis n'importe où dans le programme, même sans créer d'instance de la classe.

Non statique : Les membres non statiques ont une portée locale et ne sont accessibles que via une instance de la classe. Ils ne sont pas accessibles sans créer un objet.

Accès aux membres

Statique: Les membres statiques ne peuvent accéder qu’aux autres membres statiques de la même classe. Ils ne peuvent pas accéder directement aux membres non statiques.

Non statique : Les membres non statiques peuvent accéder aux membres statiques et non statiques au sein de la même classe. Ils ont un accès direct à tous les membres.

Usage

Statique: Les membres statiques sont couramment utilisés pour les méthodes utilitaires, les constantes ou les variables qui ne sont pas spécifiques à des instances individuelles. Par exemple, une classe Math contenant des fonctions mathématiques.

Non statique : Les membres non statiques sont utilisés pour un comportement spécifique à une instance, car ils contiennent des données spécifiques à chaque objet. Par exemple, des variables d'instance qui stockent des valeurs uniques pour chaque objet.

Efficacité de la mémoire

Statique: Les membres statiques ne consomment de la mémoire qu'une seule fois, quel que soit le nombre d'instances créées. Ils peuvent être économes en mémoire lorsque les mêmes données doivent être partagées entre tous les objets.