Maison  >  Article  >  Java  >  Introduction détaillée aux caractéristiques du statique en Java

Introduction détaillée aux caractéristiques du statique en Java

黄舟
黄舟original
2017-03-24 10:32:031408parcourir

Cet article présente principalement les caractéristiques de static en Java. A une très bonne valeur de référence. Jetons un coup d'œil avec l'éditeur ci-dessous

Lors de l'interview d'il y a deux jours, on m'a interrogé sur les caractéristiques du statique La réponse n'était pas très bonne à l'époque.

Lorsque nous comprenons quelque chose, nous le mesurons généralement sous trois aspects : ce que c'est, pourquoi et comment. Pour le statique en Java, nous en discuterons également de cette manière, et nous devons clarifier les points suivants :

1. Que signifie statique en Java et pourquoi devrions-nous l'utiliser ?

2. Comment utiliser le statique en java ?

3. Quelles sont les caractéristiques et les "limites" de la statique ?

4. Lorsqu'une variable membre est modifiée statiquement, quelle est la différence entre elle et une variable membre non statique ?

1. Que signifie statique en Java et pourquoi devrions-nous l'utiliser ?

static--static-"specify location"

Tout d'abord, jetons un coup d'œil à la mémoire de Java : Java divise la mémoire en mémoire de pile et la mémoire de pile y est utilisée. stocke certains types de variables de base et variables de référence de tableaux et d'objets, tandis que la mémoire tas est principalement utilisée pour placer des objets.

Les variables et méthodes modifiées avec static spécifient en fait "l'emplacement fixe" de ces variables et méthodes en mémoire - stockage statique. Puisqu'il existe une « position fixe », leur « taille » semble être fixe. Avec les caractéristiques de position fixe et de taille fixe, il est très pratique d'ouvrir de l'espace dans la pile ou le tas. Si une variable ou une méthode statique ne sort pas de sa portée, son handle de référence ne changera pas.

Nous voyons souvent que les variables statiques sont quelque peu similaires au concept de variables globales en C ; la statique représente le partage de mémoire, c'est-à-dire que chaque instance pointe vers la même adresse mémoire. Apporter de la statique signifie dire à la JVM qu'elle est statique et que ses références (y compris les références indirectes) pointent toutes vers le même endroit. Si vous la modifiez à cet endroit, elle ne deviendra plus la même qu'avant. ne reviendra pas.

Remarque : La méthode main() elle-même dans la classe principale de Java est statique, donc la méthode principale est exécutée lorsqu'aucune nouvelle instance n'est générée.

2. Comment utiliser le statique en java ?

  • static est un modificateur utilisé pour modifier les membres (variables membres et fonctions membres).

  • Lorsqu'un membre est modifié statiquement, il existe une méthode d'appel supplémentaire en plus d'être appelée par l'objet, elle peut également être appelée directement par le nom de la classe : class name.static. membre.

3. Quelles sont les caractéristiques et les "limites" de la statique ?

(1) Fonctionnalités

  • Les membres statiques sont chargés au fur et à mesure que la classe est chargée

  • Les membres statiques existent avant les objets ;

  • les membres statiques sont partagés par tous les objets ; Il existe une méthode d'appel supplémentaire, qui peut être appelée directement par le nom de la classe.

  • (2) Avantages et inconvénients

Avantages :

Stockez les données partagées des objets dans un espace séparé pour économiser de l'espace. Il n'est pas nécessaire de stocker une copie dans chaque objet

  • peut être directement utilisé pour appeler le nom de classe.

  • Inconvénients :

Le cycle de vie
    est trop long ;
  • L'accès est limité et seul l'accès statique est disponible.

  • (3)
Notes

Les méthodes statiques uniquement peuvent accéder aux membres statiques, les méthodes non statiques peuvent accéder à la fois statiques et non statiques

  • cela ne peut pas être défini dans les méthodes statiques,

    super
  • mot-clé (car This représente ; un objet, et lorsqu'il existe statiquement, il peut n'y avoir aucun objet, et static précède l'existence des objets. Par conséquent, lorsque la méthode statique est en cours d'exécution, cela n'est représenté par aucun objet. En termes simples, les données dans la mémoire avancée ne peuvent pas. accéder aux données de la mémoire arrière, mais les données de la mémoire arrière peuvent accéder aux données de la mémoire avancée)
  • La fonction principale est statique

  • 4. Lorsque la variable membre est Quelle est la différence entre la modification statique et les variables membres non statiques ?
  • Les variables statiques sont également appelées variables de classe, qui sont des variables qui peuvent être appelées directement par le nom de la classe. Cette variable appartient à la classe et est appelée variable membre, ou variable d'instance. qui sont appelés. Ce que l'objet appelle est l'objet spécifique auquel il appartient.

  • Les variables statiques sont chargées au fur et à mesure du chargement de la classe, ce qui signifie également qu'elles disparaissent à mesure que la classe disparaît et ont le cycle de vie le plus long. Les variables d'instance sont chargées au fur et à mesure que l'objet est créé et disparaît ; lorsque l'objet disparaît et existe selon le cycle de vie de l'objet.

  • Les variables statiques sont stockées dans la zone statique de la zone de méthode ; les variables d'instance existent dans la mémoire tas à laquelle appartient l'objet.

  • Les données des variables statiques sont partagées par tous les objets ; les variables d'instance sont des données uniques dans l'objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn