[Java] Frage zu static

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Johnny990, 28. Februar 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 28. Februar 2007
    Frage zu static

    Hallo!

    hab mal wieder ne Frage! Diesmal der allgemeinen Art!

    Und zwar: Kann mir jemand den GENAUEN Sinn von "static" (Variablen und Methoden ) erklären, in Beziehung zu Objektmethoden- bzw variablen.
    Wann nimmt man was her?Gibts da so ne allgmeine Regel? (Könnte man nicht einfach alles static machen? dann würde man sich doch die Instanzierung jedesmal sparen, oder?)

    Hab das noch nicht ganz so gerafft....

    Wär echt dankbar für eine ausführliche genaue Antwort!


    Vielen Dank schon mal im Voraus.

    Lg
     
  2. 28. Februar 2007
    AW: Frage zu static

    Ich erklär das einfach mal mit Hilfe einer Beispielklasse:

    Code:
    public class Beispiel {
     public static Beispiel BeispielLaden(string Dateiname) {
     // Beispielcode
     }
     public void BeispielSpeichern()
     {
     // Beispielcode
     }
     static int Zaehler;
     int Nummer;
    }
    Die Klasse hat jetzt keinen Sinn, aber zum erläutern ist die gut

    Wir fangen mit den Methoden an:
    Nehmen wir an, du hast ein Beispiel-Objekt gespeichert, wie ist im Moment ja egal. Jetzt startest du dein Programm neu, und möchtest das Objekt wieder laden. Wenn du die Lade-Methode nicht statisch machst, muss du zunächst ein neues Objekt erzeugen, um dann dein gespeichertes Objekt zu laden und das erzeugte Objekt durch das geladene zu ersetzen.
    Das wäre gerade bei sehr großen Objekten sehr Speicherintensiv (von der neu erzeugten Klasse muss ja Speicher für alle Membervariablen reserviert werden, die ja eh nicht gebraucht werden).
    Hier kommt der Vorteil einer static-Methode zum tragen. Hier kannst du das ganze rumgelade, in einer einzigen Zeile abwickeln:
    Code:
    Beispiel MeinBeispiel = Beispiel.BeispielLaden("Beispiel.ser");
    Dabei wird dann kein Hilfsobjekt erstellt, dass heißt, dass der Speicher dafür auch nicht reserviert wird.

    Anders schaut das mit der Methode BeispielSpeichern aus. Hier ist es sinnvoll die Methode nicht statisch zu machen. Wenn du dein Objekt abspeichern willst, hast du es ja eh schon irgendwie erstellt. Dann kannst du das Objekt ganz gemütlich speichern, weil du die Methode über das bereits erzeugte Objekt aufrufst, und somit in der Mehtode selber das Objekt über einen this-Zeiger speichern.

    Ein wenig anders schaut das mit den Variablen aus:
    Die statische Variable soll einfach nur zählen, wie viele Objekte der Klasse erstellt wurden. Das schöne daran ist, dass, egal welches Objekt du aufrufst, alle Objekte auf die selbe Variablen zugreifen. Das heißt also, wenn du im Objekt A den Zaehler um 3 erhöhst, dann kennt das Objekt C den neuen Wert auch. Die Variable wird also von allen Instanzen der Klasse geteilt.

    Bei den "normalen" Variablen hat jedes Objekt seine eigene Variablen. Das heißt, jedes Objekt kann seinen eigenen Wert in der Variable speichern, ohne, dass die anderen Objekte davon betroffen sind. Das macht zum Beispiel bei einer ID Sinn.

    Ich hoffe ich konnte dir helfen, falls du noch Fragen hast, nur her damit

    Gruß vom Niederrhein(er)
     
  3. 28. Februar 2007
    AW: Frage zu static

    PERFEKT erklärt! Super vielen Dank!

    Habs gerafft!


    Noch eins vielleicht, wo ich schon mal beim fragen bin! Was ist ein Kommandozeilenparameter und wie kann ein Wert vom benutzer als kommandozeilenparameter übergeben werden?????


    Vielen Dank schon mal
     
  4. 28. Februar 2007
    AW: Frage zu static

    Kommandozeilenparameter sind die Argumente / Parameter, die beim Ausfuehren deines Programms per Terminal hinzugefuegt werden.
    Beispiel:

    Code:
    ./deinprogramm argument1 argument2 argument3
    Das Ganze kannst du dann so abrufen:
    Code:
    public static void main(String[] args){
    // args[0] = "argument1"
    // args[1] = "argument2"
    // args[2] = "argument3"
    }
    Beispiel:
    Code:
    public static void main(String[] args){
     for(int i=0; i < args.length; i++)
     System.out.println( args[i] );
    }
    Mfg,

    Kolazomai
     
  5. 28. Februar 2007
    AW: Frage zu static

    Also du kannst zu deinem Programm vom Benutzer Parameter angeben lassen, das sähe dann so aus:

    Code:
    java Strafarbeit 100
    Die "100" kannst du dann im Programm abrufen. Die steht im String-Array args der main-Methode.
    Wir sollten mal in einer klausur ein Programm schreiben, was das benutzt. Ich bring das mal als Beispiel:

    Code:
    public class Strafarbeit {
     public static void main(String args[]){
     int Anzahl = Integer.parseInt(args[0]);
     for(int i = 1; i <= Anzahl; i++)
     System.out.println("Ich darf keine Papierflieger in der Vorlesung werfen!");
     }
    }
    Gruß vom Niederrhein(er)
     
  6. 28. Februar 2007
    AW: Frage zu static

    und was bringt mir das dann! Geht das vielleicht ein bisschen genauer und einfacher erklärt?

    Vor allem wo gibt der Benutzer die parameter an?
     
  7. 28. Februar 2007
    AW: Frage zu static

    Sollte alles erklaeren.
     
  8. 28. Februar 2007
    AW: Frage zu static

    ok habs verstanden! Danke nochmals an alle!
     
  9. 28. Februar 2007
    AW: Frage zu static

    [X] Erledigt.

    ~closed~

    Mfg,

    Kolazomai
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.