Je crois que tout le monde sait que le nouveau mot-clé de Java instancit un objet. Oui, il alloue également l'espace mémoire pour les nouveaux objets.
Par exemple, dans un cas comme New Mydate (22, 7, 1964), son achèvement nécessite quatre parties:
un. Allouer un espace mémoire pour le nouvel objet et stocker le mydate au tas.
deux. Effectuer l'initialisation de l'affichage
trois. Exécuter le constructeur. Les paramètres du support dans la nouvelle méthode sont transmis au constructeur et la valeur de l'objet est publiée.
Quatre. Cette variable est attribuée comme référence à un nouvel objet en mémoire de tas
En termes de laïque, votre nouvelle opération ajoute en fait un nouvel objet au tas de mémoire et initialise le nouvel objet via une méthode de constructeur et stockant la référence à l'objet dans la pile.
Ici, j'ai un cas facile à comprendre:
classe publique Pet {bean protégé be = this.b (); public bean b () {return new Bean ();}} public void test () {be.setName ("zhang san");} public void test2 () {System.out.println (be.getName ());} public static vide main (String [] args) {peuple pe = new People (); pe.Test (); pe.Test2 ();} Une classe de parents et une classe d'enfants. Attribuez une valeur au nom via le test. La valeur de sortie de Test2 constatera que le test de sortie est attribué au nom. Parce que lors de l'exécution de la méthode principale, le programme compile d'abord la classe parent et instanciera l'objet BE, donc les références dans la sous-classe sont le même objet, mais s'ils sont modifiés au code suivant:
public void test () {bean be = new Bean (); be.setName ("Zhang San");} public void test2 () {System.out.println (be.getName ());} public static void main (Pe.Test2 ();} Pe. Dans le test, je nouveau un objet BE, et la sortie est nul, car les références qu'ils stockent dans la pile de mémoire sont différentes. Dans le processus d'encodage réel, il est préférable d'écrire des objets avec plus de références dans la classe parent, hériter des sous-classes ou de les écrire en mode paresseux unique de Java:
classe publique Danli1Class {// 1. Pour implémenter le modèle à but lucratif, vous devez modifier sa méthode de construction () privé danli1class () {} // 2. Tout d'abord, instanciez l'instance par vous-même privé danli1class dan1 = new Danli1Class (); // 3. Pour vous assurer que d'autres programmes accèdent à l'instance HUA Objet de cette instance, vous devez définir une méthode statique publique statique Danli1class Danli1 () {return Dan1;}} Cela enregistrera l'utilisation de la mémoire et permettra à la réutilisation d'objets, alors pourquoi ne pas le faire?