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

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

Jul 28, 2018 am 11:23 AM

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Apr 19, 2025 pm 11:30 PM

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Apr 19, 2025 pm 09:51 PM

Wenn Sie TKMybatis für Datenbankabfragen verwenden, ist das Aufbau von Abfragebedingungen ein häufiges Problem. Dieser Artikel wird ...

Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Apr 19, 2025 pm 11:21 PM

Verstehen Sie die Zufälligkeit von kreisförmigen Abhängigkeiten beim Start des Frühlingsprojekts. Bei der Entwicklung des Frühlingsprojekts können Sie Zufälligkeit begegnen, die durch kreisförmige Abhängigkeiten beim Projektstart verursacht werden ...

See all articles