Frage von gut4fr5g4, 202

Java static variablen?

kann einer bitte für lappen erklären, was static bei variablen bedeutet? bitte anschaulich mit code-beispielen erklären :) :D

bitte auch den unterschied zwischen non-static und static variablen erklären mit beispielen

(gewissenleute hier im forum haben es mir schon erklärt, aber ich habe es trotzdem nicht so ganz verstanden)

ich weiß, das sie nicht von einer instanz aufgerufen werden müssen, aber mehr auch nicht :/

LG

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von New2016, 94
Kommentar von New2016 ,

Hier sogar noch ein Link, da ich so freundlich bin.

http://www.guru99.com/java-static-variable-methods.html

Antwort
von FelixCrafting, 44

Statische Variabeln gibt es nur einmal, also ihr Wert ist immer und überall gleich. Sobalt der Wert geändert wird, gilt das für alle Referenzen der Variable.

Antwort
von Orsovai, 27

Ich probiers mal ausführlich und anschaulich.

Du weißt sicher schon, dass Java eine rein objektorientierte Sprache ist, d.h. alles ist Teil einer Klasse. C++ beispielsweise ist zwar objektorientiert, aber nicht so rein wie Java. Die C++ Methode int main() ist Mitglied keiner Klasse. Bei Java gibt es sowas nicht, d.h. es braucht ein class Programm, in der der Einstiegspunkt static void Main() gesetzt werden kann.

Du weißt sicher auch, dass eine "normale" Klasse Instanzen besitzt, die man mich einem Konstruktor deklariert. Diese Instanzen können Methoden und Eigenschaften haben.

Beispielsweise könnte es eine Klasse Autos geben, in der die Methoden fahren(), tanken() etc. und die Eigenschaften Gewicht, Tankvolumen etc. stehen.

Du kannst dann beispielsweise in static void Main() ein neues Auto mittles des Konstruktors deklarieren (es handelt sich hier also um EIN konrketes Objekt), ihm Eigenschaften zuweisen, diese Auslesen und es Sachen (Methoden) machen lassen.

Was machst Du jetzt aber, wenn Du wissen möchtest, wie viele Autos es überhaupt gibt (also wie viele deklarierte Objekte Deine Klasse hat)? Diese Information hängt nicht von einem konkreten Auto ab, sondern ist eine Methode der Klasse. Und eine solche Methode deklariert man als static.

Man kann auch eine ganze Klasse als static deklarieren. Eine solche Klasse hat keine Objekte, sondern nur (wiederum zwingen statische) Methoden und Eigenschaften.

Ein Java Beispiel: Die Klasse Math. Hier finden sich einige mathematische Funktionen (also Methoden). Gucken wir uns mal den Absolutbetrag | | an. Aufgerufen wird er mittels Math.abs(). Sollte der Absolutbetrag eine Methode eines Objekts der Klasse Math sein? Nein, denn ich will für beliebige Variablen double a deren Absolutbetrag erhalten. Also ist die Methode abs() eine static Methode (darauf weißt natürlich schon hin, dass man sie mittels Math.abs()) aufruft.

Ich hoffe, jetzt siehst Du etwas klarer.

Kommentar von SureYouCan ,

Was machst Du jetzt aber, wenn Du wissen möchtest, wie viele Autos es überhaupt gibt 

Vielleicht mal ein kleiner Beispiel-Code dazu...

final class Car {
private static int createdCars = 0;

public Car() {
++Car.createdCars;
}

public static int getCreatedCars() {
return Car.createdCars;
}
}

public final class CarMain {
public static void main(final String[] args) {
System.out.println("Es wurden " + Car.getCreatedCars() + " Autos erstellt");
new Car();
new Car();
new Car();
new Car();
System.out.println("Es wurden " + Car.getCreatedCars() + " Autos erstellt");
}
}

Ich hasse diesen Code-Editor....

Kommentar von gut4fr5g4 ,

Danke, hat mir sehr weiter geholfen!

Antwort
von Unkreatiiiev, 79

Statische Elemente (Variablen, Methoden, Klassen) sind klassen- und nicht objektgebunden. Das heißt, es gibt sie im Programm nur ein einziges mal. Dadurch kann auf sie von überall zugegriffen werden (solange die Sichtbarkeit es erlaubt).

Andersherum kann man logischerweise in statischen Methoden nicht auf nicht-statische Elemente zugreifen.

Keine passende Antwort gefunden?

Fragen Sie die Community