Frage zu Objecten mit static

JAVAx

Grünschnabel
Code:
class A {
  public A() { System.out.println("erster"); }

  static { System.out.println("zweiter"); }
}



public class sdaf  {
  public static void main(String[] args) {
    A a = new A();

  }
}

Hey,

ich dachte das ein Konstruktor immer als erstes aufgerufen wird,,, also Ausgabe:
Erster
Zweiter

Kann mir einer erklären wieso das hier andersrum läuft? Wird durch static sowas wie eine Variable gesetzt?

Vielen Dank im Voraus!
 
Ein static-Bereich in einer Klasse ist sowas wie ein "Klassen-Konstruktor", der wird aufgerufen, wenn die Klasse geladen wird (nicht wenn die sie instanziert wird!!).
Dies geschieht vom Class-Loader in der Ladephase der JVM, noch bevor deine main aufgerufen wird.

Zum Weiterlesen: Java-Insel

Gruß
Matt
 
Zurück