Maison >Java >javaDidacticiel >Le processus d'initialisation et d'instanciation des variables statiques, des variables et des constructeurs

Le processus d'initialisation et d'instanciation des variables statiques, des variables et des constructeurs

php是最好的语言
php是最好的语言original
2018-07-28 11:23:161482parcourir

Cet article présente la séquence d'exécution d'initialisation des variables statiques, des variables et des constructeurs en Java et approfondit la compréhension de l'initialisation de classe ~ Généralement, il existe des variables statiques, des variables, des constructeurs et des méthodes dans une classe. (En fait, le constructeur peut dans une certaine mesure la traiter comme une méthode statique). Après les avoir combinés, la classe suivante est formée :

class Art{
static String ar1,ar2,ar3 ;
statique{
ar1 = "bon";
ar2 = "parfait";
ar3 = "belle";
System.out.println(ar1);
Sortie système. .println(ar2);
        System.out.println(ar3);
art3 = "art3";
System.out.println(art1);
System.out .println(art2);
System.out.println(art3);
}
Art(){
System.out.println("Constructeur d'art...");
🎜>>

Comme vous le savez, dans notre projet Lors du processus de développement, nous utilisons souvent une fonctionnalité majeure de Java, l'héritage. Nous comprenons donc Art comme une classe de base, qui aura un tas de sous-classes pour en hériter, nous obtenons donc une autre sous-classe Drawing

class Drawing extends Art{
static String dra1,dra2,dra3 Statique {
DRA1 = "Fenêtre";

DRA2 = "Flay"

DRA3 = "Flool";

System.out.println (DRA1); (dra2);

System.out.println(dra3);
}
String cc1,cc2,cc3;
{
cc1 = "aaa";
cc2 = "bbb ";
cc3 = "ccc";
System.out.println(cc1);
System.out.println(cc2);
System.out.println(cc3);
}
Drawing(){
System.out.println("Drawing constructor...");
}
}

La classe Drawing peut également avoir des sous-classes , donc nous écrire une autre sous-classe de la classe Drawing Cartoon
classe publique Cartoon extends Drawing{
static String car1,car2,car3;
static{
car1 = "one";
Car2 = "two" ;
Car3 = "trois";

System.out.println(car1);

System.out.println(car2);
);
}
String info1,info2 ,info3;
{
info1 = "info1";
info2 = "info2";
info3 = "info3";
System.out.println(info1);
Système .out.println(info2);
System.out.println(info3);
}
public static void main(String[] args) {
Cartoon cartoon = new Cartoon();
}
>

Dans la classe Cartoon, nous instancions Cartoon. Analysons étape par étape comment les variables et les constructeurs sont instanciés
Quand nous verrons la fonction principale
new Cartoon(), la JVM, je chercherai la classe Cartoon. pour voir s'il existe une classe de base. Cependant, j'ai trouvé la classe Drawing basée sur le mot-clé extends
Ensuite, je suis allé dans la classe Drawing pour savoir s'il existe le mot-clé extends, puis j'ai trouvé la classe Art. classe, donc il recherche la classe Art. Dans la classe Art, le mot-clé extends n'est pas trouvé, donc la JVM recherchera plus loin selon ses propres règles, car si extends n'est pas utilisé, java l'ajoutera par défaut. class Classe Object, cette recherche est terminée. À ce stade, la JVM recherchera les variables statiques avec le mot-clé static
Dans la classe Object, aucune variable statique avec le mot-clé static n'a été trouvée, donc, à ce moment, le JVM descendra dans la classe Art, trouvera le bloc de variables avec static, placera ces variables dans le bloc mémoire (pile) et leur attribuera les valeurs correspondantes
static String ar1,ar2 ,ar3;
static{
ar1 = "bon";
ar2 = "parfait";
ar3 = "beau";
System.out.println(ar1);
System.out.println ( ar2); Bloc variable statique du mot-clé statique
static String dra1,dra2,dra3;
static{

dra1 = "window";

dra2 = "flay";
dra3 = "flool" ";
System.out.println(dra1);
System.out.println(dra2);
System.out.println(dra3);
}

Allez ici À ce stade, la JVM fait la même chose que dans la classe Art. Elle alloue la valeur de la variable dans la mémoire (pile), puis exécute la méthode System.out.print(), imprime la valeur, puis continue. . Allez-y et trouvez la classe Cartoon. Ce que vous faites est la même chose que ce que vous avez fait dans la classe Drawing
Attribuez la variable statique du mot-clé static dans la mémoire (pile) et imprimez-la.

static String car1,car2,car3;

static{
car1 = "un";

car2 = "deux";

car3 = "trois";
Système .out.println(car1);
System.out.println(car2);
System.out.println(car3);
}

Une fois que la JVM a terminé l'exécution de ce action, La deuxième étape consiste à commencer à exécuter l'action d'instanciation de l'objet. La JVM commencera à monter de

Cartoon ——> dans la classe Object, instanciez la variable puis exécutez la fonction constructeur de l'objet

Une fois l'exécution terminée, exécutez le long de la ligne vers la classe Art, bloquez la variable

String art1,art2. ,art3;

{

art1 = "art1";
art2 = "art2";
art3 = "art3";
System.out.println(art1);
Système .out.println(art2);
System.out.println(art3);
}

Attribuez une valeur sur le tas, puis exécutez l'instruction print, puis exécutez le constructeur du Classe Art. Une fois le constructeur exécuté, continuez Go
pour exécuter la classe Drawing et constatez qu'il y a ces variables dans la classe Drawing
String cc1,cc2,cc3;
{

cc1 = " aaa";

cc2 = "bbb";
cc3 = "ccc";
System.out.println(cc1);
System.out.println(cc2);
Système. out.println(cc3);
}

JVM initialise ces variables dans le tas de mémoire. S'il existe un type de base et qu'il s'avère qu'aucune valeur ne lui a été attribuée, une valeur par défaut lui sera attribuée. Si aucune valeur n'est attribuée aux autres types, elle le sera. se verra attribuer la valeur par défaut null , puis la JVM exécutera le constructeur de la classe Drawing. Ensuite, la JVM continue de descendre et atteint la classe Cartoon
et effectue la même action répétée
pour instancier la variable
String info1,info2,info3;
{
info1 = "info1" ;
info2 = "info2";
info3 = "info3";
System.out.println(info1);
System.out.println(info2);
System.out. println (info3);
>

Attribuez-le à la mémoire du tas, puis imprimez la valeur correspondante, puis exécutez la méthode constructeur de la classe Cartoon
L'intégralité du programme est posté ci-dessous, tout le monde comprend d'abord Jetez un œil au résultat de l'exécution du programme. Ensuite, exécutez à nouveau le programme pour voir si votre compréhension est cohérente avec le résultat du programme

class Art extends Object{
. static String ar1,ar2,ar3;
static{
ar1 = "bon";
ar2 = "parfait";
ar3 = "beau";
System.out.println(ar1 );
System.out .println(ar2);
        System.out.println(ar3); "art2";
art3 = "art3";
System.out.println(art1) ;
System.out.println(art2);
System.out.println(art3);
}
Art(){
System.out.println("Constructeur d'art.. .");
}
}

class Drawing extends Art{
static String dra1,dra2,dra3;
static{
dra1 = "window";

dra2 = "flay";

dra3 = "flool";
System.out.println(dra1 );
System.out.println(dra2);
System.out.println(dra3 );
}
String cc1,cc2,cc3;
{
cc1 = " aaa ";
cc2 = " bbb ";
cc3 = " ccc ";
System.out.println(cc1);
System.out.println(cc2);
System.out.println(cc3);
}
Dessin(){
System.out .println("Constructeur de dessin...");
}
}

public class Cartoon extends Drawing{
static String car1,car2,car3;
static{
car1 = "un";

car2 = "deux";

car3 = "trois";
System.out.println(car1);
System.out.println(car2);
System.out.println(car3);
}
String info1,info2,info3;
{
info1 = "info1";
info2 = "info2";
info3 = "info3";
System.out.println(info1);
System.out.printl n (info2);
System.out.println(info3);
}
public static void main(String[] args) {
Cartoon cartoon = new Cartoon();
}
}
Les résultats d'exécution du programme seront publiés ci-dessous

bien
parfait
belle
fenêtre
flay
flool
un
deux
trois
art1
art2
art3
Constructeur d'art...
aaa
bbb
ccc
Constructeur de dessin...
info1
info2
info3

Articles connexes :

Analyse complète de l'initialisation des variables statiques en Java

L'ordre d'exécution de l'initialisation des membres statiques, des blocs de code statiques, des membres ordinaires, des blocs de code ordinaires et des constructeurs des classes Java Explication détaillée

Vidéos associées :

La différence entre les variables statiques et les variables membres - Tutoriel vidéo JAVA pour débutant

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