Zahl erhöhen!



  • Hallo!
    Wie kann ich eine Klasse programmieren,
    die mir eine Zahl immer um eine erhöht,
    und die aktuelle auch nicht verliert
    so dass er nicht immer von Anfang beginnt:

    z.B

    puclic class Bestellung
    {
    int iBestellNr;
    public Bestellung()
    {
    iBestellNr = iBestellNr + 1;
    System.out.println("Nun ist "+ iBestellNr +"die nächste Bestellnummer" );
    }
    }

    und jedesmal wenn ich die Klasse aufrufe
    new Bestellung();
    Ausgabe = ... Nun ist 2 die nächste Bestellnummer
    nächste Bestellnummer !
    Wie geht soewtas????



  • BestellNr static machen...



  • Hallo!
    Danke für die so ausführliche Antwort hoffe sie haben dabei nicht soviel
    Tinte und und Papier verwendet.
    Zurück zu Ihrer Antwort was hat die Sache mit static auf sich?
    Danke

    Tschüüüüü



  • hi tabbooka
    wenn du eine variable nicht static machst, und sie in einer klasse ist(dann ists ein Attribut, glaub ich) , dann wird sie immer wenn du die klasse instanzierst(neues objekt machen(Myclass hi = new Myclass();) wird die variablöe neu gemacht, es ist also nicht dieselbe variable. Bsp:

    Myclass {
    int a = 333;
    }
    
    Myclass hallo = new Myclass();
    hallo.a = 111;
    
    Myclass wiegehts = new Myclass();
    System.out.print(wiegehts.a+ hallo.a); //Ausgabe: 333111
    
    Wenn du a aber static machst:
    
    Myclass {
    static int a = 333;
    }
    
    Myclass hallo = new Myclass();
    hallo.a = 111;
    
    Myclass wiegehts = new Myclass();
    System.out.print(wiegehts.a+ hallo.a); //Ausgabe: 111111
    

    so, hoffe habe dir geholfen...

    bye donay



  • Um's ganz einfach zu sagen:

    statische Variablen existieren nur einmal!! Es gibt sie nur ein mal pro Klasse, unabhängig davon, wieviele Instanzen du hast.



  • warum einfach erklären wenns auch kompliziert geht? 🤡



  • Zitat "Es gibt sie nur ein mal pro Klasse!"

    Wenn es dem so ist wie kann sie dann jedesmal verändert werden.
    Das macht doch keinen Sinn.
    Jede Instanz erhält jedesmal einen anderen Wert
    obwohl sie pro Klasse nur einmal existiert.



  • hi.
    also:
    wenn du eine varîable machst, bekommt sie ne adresse im ram.
    wenn du die variable static machst, ist ihre adresse im ram konstant, dass heisst die variable gibts mehrmals(naja) sie greift aber immer auf die gleiche adresse im ram zu.

    na?

    bye donay



  • Ich denke immer, dass das am besten an einem Beispiel ersichtlich ist:
    Hier das Testprogramm

    public class TestProgramm {
      public static void main(String[] args)
      {
        StaticTest st1 = new StaticTest();
        StaticTest st2 = new StaticTest();
        st1.test = 5;
        System.out.println(st1);
        System.out.println(st2);
      }
    }
    

    Hier Fall 1 (Variable ist nicht static):

    class StaticTest {
      public int test = 0;
    }
    

    Die Ausgabe ist:

    5
    0
    

    Fall 2 (Variable ist static):

    class StaticTest {
      public static int test = 0;
    }
    

    Die Ausgabe ist:

    5
    5
    

    Sprich:
    Wenn man eine Variable static macht, dann 'teilen' sich alle Instanzen der Klasse diese Variable, also wenn sie von einer instanz verändert wird, dann wird sie auch bei allen anderen verändert.


Anmelden zum Antworten