Heim  >  Artikel  >  Java  >  Der Initialisierungs- und Instanziierungsprozess von statischen Variablen, Variablen und Konstruktoren

Der Initialisierungs- und Instanziierungsprozess von statischen Variablen, Variablen und Konstruktoren

php是最好的语言
php是最好的语言Original
2018-07-28 11:23:161380Durchsuche

In diesem Artikel wird die Ausführungssequenz der Initialisierung statischer Variablen, Variablen und Konstruktoren in Java vorgestellt und das Verständnis der Initialisierung von Klassen vertieft. ~ Im Allgemeinen gibt es in einer Klasse statische Variablen, Variablen, Konstruktoren und Methoden. (Tatsächlich kann der Konstruktor es bis zu einem gewissen Grad als statische Methode behandeln. Nach der Kombination wird die folgende Klasse gebildet:

class Art{
static String ar1,ar2,ar3 ;
static{
ar1 = "gut";
ar2 = "perfekt";
ar3 = "schön";
System.out.println(ar1);
System aus. 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("Art constructionor...");
}
}

Wie Sie wissen, verwenden wir in unserem Projekt während des Entwicklungsprozesses häufig eine wichtige Funktion von Java, die Vererbung. Wir verstehen also Art als Basisklasse, die eine Reihe von Unterklassen haben wird, um sie zu erben, also erhalten wir eine weitere Unterklasse Drawing

class Drawing erweitert Art{
static String dra1,dra2,dra3 ; > Statisch {

DRA1 = „Fenster“;

DRA3 = „Flool“;

System (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 constructionor...");
}
}

Die Drawing-Klasse kann auch Unterklassen haben, also wir schreibe eine weitere Unterklasse der Drawing-Klasse Cartoon
public class Cartoon erweitert Drawing{
static String car1,car2,car3;
static{
car1 = "one";
Car2 = "two" ;
Car3 = "drei";

System.out.println(car1);

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

In der Cartoon-Klasse instanziieren wir Schritt für Schritt, wie Variablen und Konstruktoren instanziiert werden.
Wenn wir die Hauptfunktion
new Cartoon() sehen, werde ich nach der Cartoon-Klasse suchen Um zu sehen, ob es eine Basisklasse gibt, habe ich die Klasse „Drawing“ basierend auf dem Schlüsselwort „extends“ gefunden. Dann bin ich zur Klasse „Drawing“ gegangen, um herauszufinden, ob es das Schlüsselwort „extends“ gibt, und habe dann die Klasse „Art“ gefunden. Daher sucht er nach der Art-Klasse. In der Art-Klasse wird das Schlüsselwort „extends“ nicht gefunden. Daher führt die JVM eine weitere Suche nach ihren eigenen Regeln durch, denn wenn „extens“ nicht verwendet wird, fügt Java es standardmäßig hinzu Klasse Objektklasse, diese Suche wurde abgeschlossen. Zu diesem Zeitpunkt sucht die JVM nach statischen Variablen mit dem Schlüsselwort static
. In der Objektklasse wurden keine statischen Variablen mit dem Schlüsselwort static gefunden JVM geht zur Art-Klasse hinunter, sucht den Variablenblock mit static, legt diese Variablen in den Speicherblock (Stapel) und weist ihnen die entsprechenden Werte zu
static String ar1,ar2 ,ar3;
static{
ar1 = "good";
ar2 = "perfect";
ar3 = "beautifull";
System.out.println(ar1);
System.out.println ( ar2); Statischer Variablenblock des statischen Schlüsselworts
static String dra1,dra2,dra3;
static{
dra1 = "window";

dra2 = "flay";

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

Gehe hierher Zu diesem Zeitpunkt macht die JVM dasselbe wie in der Art-Klasse. Sie weist den Variablenwert im Speicher (Stapel) zu, führt dann die Methode System.out.print() aus, druckt den Wert und fährt dann fort . Suchen Sie nach der Cartoon-Klasse.
Weisen Sie die statische Variable des statischen Schlüsselworts im Speicher (Stapel) zu und drucken Sie sie aus.

static String car1,car2,car3;

static{

car1 = "one";
car2 = "two";

car3 = " three";

System .out.println(car1);
System.out.println(car2);
System.out.println(car3);
}

Nachdem die JVM die Ausführung abgeschlossen hat Aktion: Der zweite Schritt besteht darin, die Aktion zum Instanziieren des Objekts auszuführen, und die JVM beginnt mit dem Aufsteigen von

Cartoon ——> Art ——> Instanziieren Sie zunächst die Variable in der Object-Klasse und führen Sie dann die Konstruktorfunktion des Objekts
aus. Führen Sie nach Abschluss der Ausführung die Variable

in der Art-Klasse aus. art2,art3;

{

art1 = "art1";

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

Weisen Sie dem Heap einen Wert zu, führen Sie dann die Druckanweisung aus und führen Sie dann den Konstruktor von aus Nachdem der Konstruktor ausgeführt wurde, fahren Sie mit Go
fort, um die Drawing-Klasse auszuführen, und stellen Sie fest, dass diese Variablen in der Drawing-Klasse vorhanden sind:
String cc1,cc2,cc3;
{
cc1 = "aaa";

cc2 = "bbb";

cc3 = "ccc";
System.out.println(cc1);
System.out.println(cc2);
System .out.println(cc3);
}

JVM initialisiert diese Variablen im Speicherheap. Wenn festgestellt wird, dass ihm kein Wert zugewiesen wurde, wird ihm ein Standardwert zugewiesen. Wenn anderen Typen kein Wert zugewiesen wird, wird dies der Fall sein Der Standardwert wird zugewiesen null , und dann führt die JVM den Konstruktor der Drawing-Klasse aus. Dann geht die JVM weiter nach unten und erreicht die Cartoon-Klasse
und führt dieselbe wiederholte Aktion
aus, um die Variable
String info1,info2,info3;
{
info1 = "info1" zu instanziieren. ;
info2 = "info2";
info3 = "info3";
System.out.println(info1);
System.out.println(info2);
System.out. println (info3);
}

Weisen Sie es dem Heap-Speicher zu, drucken Sie dann den entsprechenden Wert aus und führen Sie dann die Konstruktormethode der Cartoon-Klasse aus
Das gesamte Programm wird unten veröffentlicht, alle Verstehen Sie es zuerst. Schauen Sie sich das Ausführungsergebnis des Programms an. Führen Sie dann das Programm erneut aus, um festzustellen, ob Ihr Verständnis mit dem Ergebnis des Programms übereinstimmt static String ar1,ar2,ar3;
static{

ar1 = "good";

ar2 = "perfect";
ar3 = "beautifull";
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("Art-Konstruktor.. .");
}
}

class Drawing erweitert 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);
}
Drawing(){
System.out .println("Drawing-Konstruktor...");
}
}

öffentliche Klasse Cartoon erweitert Drawing{
static String car1,car2,car3;
static{
car1 = "eins";
car2 = "zwei";
car3 = "drei";
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.println(info2);
System.out.println(info3);
}
public static void main(String[] args) {
Cartoon cartoon = new Cartoon();
}
}
Die Ausführungsergebnisse des Programms werden unten veröffentlicht

gut
perfekt
schön
Fenster
flay
flool
eins
zwei
drei
Kunst1
Kunst2
Kunst3
Kunstkonstrukteur...
aaa
bbb
ccc
Zeichnungskonstruktor...
info1
info2
info3

Verwandte Artikel:

Vollständige Analyse der Initialisierung statischer Variablen in Java

Die Reihenfolge der Initialisierungsausführung von statischen Mitgliedern, statischen Codeblöcken, gewöhnlichen Mitgliedern, gewöhnlichen Codeblöcken und Konstruktoren von Java-Klassen Ausführliche Erklärung

Verwandte Videos:

Der Unterschied zwischen statischen Variablen und Mitgliedsvariablen – JAVA-Anfänger-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDer Initialisierungs- und Instanziierungsprozess von statischen Variablen, Variablen und Konstruktoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn