Kann man in Java einen Integer erstellen der für alle Klassen verfügbar ist und alle Klassen den Wert des Integers erhöhen können?

...komplette Frage anzeigen

5 Antworten

Du kannst eine Variable als statisch deklarieren, somit ist sie nicht an Objekt gebunden (an eine Klasse natürlich schon :$ wie auch immer man das sagen soll)

Das sähe so aus:
public static int zahl = 0;

Du kannst allerdings auch eine nicht statische Variable machen, dann benötigst du jedoch eine Instanz dieser Klasse:
public int zahl = 0;

In beiden Fällen hätten andere Klasse vollen Zugriff auf die Klasse, mit dem Unterschied, dass die zweite Variante eben nur funktioniert, wenn du ein Objekt dieser Klasse auf dem Heap (also im Objektspeicher) hast.


Etwas statisches (siehe main) existiert auch ohne Objekt und immer zur Laufzeit des Programmes.

Variante 1:

public class Klasse1
{
   public static int zahl;
   // mehr
}

class Klasse2
{
   public void zaehleHoch()
   {
      Klasse1.zahl++; // Inkrementiere zahl aus 
                      // Klasse1
   }
}

Variante 2:

public class Klasse1
{
   public int zahl;
   // mehr
}

class Klasse2
{
   public void zaehleHoch()
   {
      Klasse1 k1 = new Klasse1(); // Erstelle Instanz 
                                  // von Klasse1

      k1.zahl++; // Inkrementiere zahl vom Objekt k1
   }
}


Bei Variante 1 besteht die Variable zahl nur ein einziges mal im gesamten Programm!!!

Bei Variante 2 wird für jedes neue Objekt, dass du erstellst eine neue Variable zahl angelegt, d.h. je nachdem welches Objekt du aufrufst, diese variable wird hochgezählt (Vergleich Variante 1: Hier wird immer nur DIESELBE variable hochgezählt)

Von deinem Kontext her, denke ich aber eher, dass du Variante 1 möchtest.

Ich hoffe, ich konnte dir einigermaßen helfe.

Für etwaiger Fehler übernehme ich keine haftung :P

Viele Grüße
SirNik

Antwort bewerten Vielen Dank für Deine Bewertung

Kannst in deiner Hauptklasse ein "public static int meineZahl" definieren..

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn alle auf 'denselben' Wert zugreifen sollen, solltest du deine Integer-Variable als static deklarieren

Antwort bewerten Vielen Dank für Deine Bewertung

Jein.

So etwas wie wirklich globale Variablen unterstützt Java nicht.

Du kannst aber den Integer jeder Klasse by reference übergeben.

Antwort bewerten Vielen Dank für Deine Bewertung

Natürlich. Einfach public int deineZahl = 0; definieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von LeonOttoAsk
19.09.2016, 18:58

habe ich ja aber der Wert erhöht sich trotzdem nicht

0

Was möchtest Du wissen?