Le mot-clé statique en java dépend de la JVM pour le rendre clair

Continuez à créer, accélérez la croissance ! C'est le deuxième jour de ma participation au "Nuggets Daily New Plan · June Update Challenge", cliquez pour voir les détails de l'événement

avant-propos

  • Static en Java doit avoir été utilisé par tout le monde. Il est utilisé pour modifier une classe ou une variable membre ou une méthode.
  • L'utilisation de Static est encore très simple, car il s'agit d'un modificateur. Mais si vous ne comprenez pas le principe de fonctionnement de sa modification, vous risquez de faire un bug

variable

image-20220509191420226.png

  • La figure ci-dessus est un modèle simplifié de la structure de la mémoire JVM. Quiconque a étudié la JVM sait que les objets que nous créons sont normalement dans le tas. Ensuite, les propriétés de l'objet auquel nous accédons sont naturellement stockées dans le tas.
  • Mais lorsque l'attribut de modification statique, il a changé.
 ​
 class Demo {
   //成员变量
   public int num = 100;
   //静态成员变量
   public static int count = 200;
   //静态方法
   public static void method(){
     System.out.println(count);
   }
 }
复制代码
  • La propriété num est une propriété normale et la propriété count est une variable statique. Ils ne sont pas seulement différents par leur nom. Du point de vue de la JVM, son emplacement de stockage est également différent.
  • Tout d'abord, num dépend de l'objet spécifique, donc lui et l'objet sont stockés dans le tas.
  • Et count est indépendant de l'objet. Il existe un espace dédié dans la JVM pour stocker les variables statiques. Nous appelons cet espace la zone de méthode.

méthode

  • En plus de modifier des variables, static peut également modifier des méthodes. La méthode modifiée est appelée méthode statique. Les caractéristiques des méthodes statiques, comme les variables statiques, appartiennent à des classes plutôt qu'à des objets. Dans une méthode statique, seules les variables statiques sont accessibles et les propriétés de l'objet ne sont pas accessibles via cet objet.
  • Pour résumer, seules les variables statiques sont accessibles dans les méthodes statiques et les variables non statiques ne sont pas accessibles.
  • En plus des méthodes statiques, il existe une méthode spéciale appelée blocs de code statiques. Cette méthode ne nous oblige pas à préparer le nom de la méthode, les paramètres d'entrée, les paramètres de sortie, etc. Préparez simplement le corps de la méthode. Les exigences à l'intérieur du corps de la méthode et à l'intérieur de la méthode statique sont les mêmes.

image-20220514140752124.png

  • Une autre différence importante entre les blocs de code statiques et les méthodes statiques et les méthodes ordinaires est le temps d'exécution. La différence entre les variables statiques et les variables ordinaires est l'emplacement de la distribution de la mémoire, tandis que les méthodes fonctionnent sur la pile et n'impliquent pas de stockage en mémoire, donc la différence est le moment de l'exécution de la méthode. Ici, nous devons comprendre à l'avance le mécanisme de chargement des classes de points.
  • Tout d'abord, le chargement d'une classe est divisé en cinq processus. La première étape consiste à charger les méta-informations de la classe, et la dernière étape consiste à l'initialiser. Quant aux trois premières étapes, nous ne pouvons pas comprendre ici. Il est important de savoir que l'initialisation est effectuée à l'étape finale du chargement de la classe et que l'opération d'initialisation consiste à exécuter des méthodes statiques et des blocs de code statiques.
  • À partir du processus de chargement de classe, nous pouvons également voir que les méthodes statiques ne dépendent pas de l'invocation d'objets. Parce que seules les propriétés statiques peuvent être utilisées dans les méthodes statiques. C'est-à-dire que l'objet n'a pas été créé lorsque la propriété statique est utilisée. Cela prend également en charge l'affirmation selon laquelle les variables statiques ne dépendent pas des objets.

Résumer

  • Cet article explique principalement les bases de Java, veuillez m'excuser de ne pas avoir rendu un excellent article avec des mots magnifiques. Bien que basique, c'est souvent un point de connaissance que nous avons tendance à ignorer.
  • Seul l'apprentissage continu peut faire des progrès continus.En ce qui concerne les autres scénarios d'utilisation de statique, tout ce que je peux penser à l'heure actuelle, c'est qu'il sera utilisé en mode singleton.

Je suppose que tu aimes

Origine juejin.im/post/7103332427287756831
conseillé
Classement