//Ausführungsreihenfolge: (Priorität von hoch nach niedrig.)
Statischer Codeblock>Mian-Methode>Konstruktionscodeblock>Konstruktionsmethode.
Der statische Codeblock wird nur einmal ausgeführt. Der Konstruktionscodeblock wird jedes Mal ausgeführt, wenn ein Objekt erstellt wird.
1. Gewöhnlicher Codeblock
public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。 *普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行” * */ { System.out.println("这里是普通代码块A"); } //new A(); { System.out.println("这里是普通代码块B"); } }
Ausführungsergebnis: Dies ist gewöhnlicher Codeblock A
Dies ist gewöhnlicher Codeblock B
2. Statische Codeblöcke und konstruierte Codeblöcke
Mit dem Schlüsselwort static in Java deklarierte Codeblöcke.
wird häufig zum Initialisieren von Klassen verwendet. Jeder statische Codeblock wird nur einmal ausgeführt (wenn die Klasse in den Speicher geladen wird, ist die Klasse bereits vorhanden, nachdem die Klasse in den Speicher geladen wurde), da die JVM statischen Code ausführt Beim Laden des Klassencodeblocks wird der statische Codeblock daher vor der Hauptmethode ausgeführt. Wenn die Klasse mehrere statische Codeblöcke enthält, wird der zuerst definierte Code zuerst ausgeführt und der später definierte Code wird ausgeführt
ps:
1 Statische Codeblöcke können in keiner Methode vorhanden sein body.
2 Statische Codeblöcke können nicht direkt auf statische Instanzvariablen und Instanzmethoden zugreifen: Sie müssen direkt in der Klasse definiert werden, ohne den Codeblock des Schlüsselworts hinzuzufügen wird als {}-Konstruktionscodeblock bezeichnet. Der Konstruktionscodeblock wird bei jeder Objekterstellung aufgerufen, und die Ausführungsreihenfolge des Konstruktionscodeblocks hat Vorrang vor dem Klassenkonstruktor
Ausführungsergebnis:
Dies ist ein statischer Codeblock // hat Vorrang vor der Hauptfunktionpublic class structure { { System.out.println("这里是普通代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行 } public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。 *普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行” * */ { System.out.println("这里是普通代码块A"); } new structure();//第二次类加载时静态代码块不执行 //new A(); { System.out.println("这里是普通代码块B"); } } static{ System.out.println("这里是静态代码块"); } }
Dies ist ein gewöhnlicher Code block/ /Führen Sie es aus, wenn das Objekt in der Klasse erstellt wird, und führen Sie es bei jeder Erstellung einmal aus. Das Ausführungsergebnis ist:
Hier ist der gewöhnliche Codeblock B
3. Zusammenfassung
Ausführungsergebnisse:
public class structure { { System.out.println("这里是普通代码块"); } public static void main(String[] args) { { System.out.println("这里是普通代码块A"); } //new structure(); //new structure(); new A(); { System.out.println("这里是普通代码块B"); } } static{ System.out.println("这里是静态代码块"); } } class A{ static{ System.out.println("这里是A中的普静态代码块1"); } { System.out.println("这里是A中的普通代码块1"); } { System.out.println("这里是A中的普通代码块2"); } }
Dies ist der statische Codeblock
Dies ist der gewöhnliche Codeblock A Hier ist der gewöhnliche statische Codeblock 1 in A
Hier ist der gewöhnliche Codeblock 1 in A
Hier ist der gewöhnlicher Codeblock B
Zusammenfassung der Prioritätsstufe: Statischer Codeblock>Main()>Konstruierter Codeblock
Für eine tiefergehende Analyse von gewöhnlichen Codeblöcken, konstruierten Codeblöcken und statischen Codeblöcken Achten Sie in Java bitte auf die chinesische PHP-Website >