Statische Initialisierer



  • Hallo!

    Ich habe eine Frage zu statischen Initialisierern.

    Wo besteht der Sinn darin, Variablen zu initialisieren jedesmal wenn die Klasse geladen wird.
    Jedesmal Variablen zu initialisieren bei Objekten durch Konstruktoren,
    ist doch sinnvoller als nur einmal bei der Klasse.

    Ich verstehe den Unterschied nicht zwischen Klassenvariableninitialisierungen durch static Methoden und Objectvariableninitialisierungen durch Konstruktoren.

    Sinnvoll fände ich es nur bei statischen Methodenaufrufen wie z.b. System.out.println... wo System die Klasse ist und alles andere die jeweiligen statischen Methoden so vermute ich.

    Beispiel aus einem Buch dazu:

    class Test
    {
       static int i;
       static int j;
    
       static
       {
         i=5;
         j=3*i;
       }
    }
    

    Danke.

    Falls verständlich.

    Gruß



  • hi

    schau dir folgendes an:

    Test t1=new Test();
         System.out.println(t1.i);
         Test t2=new Test();
         t2.i=4711;
         System.out.println(t2.i);
         Test t3=new Test();
         System.out.println(t3.i);
    

    ausgabe:

    5
    4711
    4711
    

    du siehst, statisch gehört zur klasse, nicht zum objekt.

    beschreibung hier:
    http://www.addison-wesley.de/Service/Krueger/kap07005.htm



  • Javaeinsteiger-David schrieb:

    Wo besteht der Sinn darin, Variablen zu initialisieren jedesmal wenn die Klasse geladen wird.
    Jedesmal Variablen zu initialisieren bei Objekten durch Konstruktoren,
    ist doch sinnvoller als nur einmal bei der Klasse.

    wenn Du z.B. die Anzahl der Objekte einer bestimmten Klasse zählen willst - dann nimmt man eine Variable, die von allen Objekten gemeinsam genutzt wird, und zählt sie im Konstruktor hoch. In der allgemeinen OOP bezeichnet man so etwas zutreffend als "Klassenvariable".


Anmelden zum Antworten