Java "static" erklären, sowohl vor variablen, als auch bei methoden?

... komplette Frage anzeigen

2 Antworten

Wenn eine Methode oder eine Variable nicht statisch ist, ist dafür immer eine Instanz notwendig:

class Auto {

String marke;

  Auto(String marke){
    this.marke = marke;
  }

 public String getMarke() {
   return marke;
 }
}

Somit kannst du mehrere Instanzen Bilden und für jede Instanz kann der Wert unterschiedlich sein:

Auto auto1 = new Auto("Toyota");
Auto auto2 = new Auto("VW");
System.out.println(auto1.getMarke());
System.out.println(auto2.getMarke());

Dahingegen sind statische Methoden und Variablen nicht an eine Instanz gebunden. Sowas macht z.B. für Konstanzen einen Sinn:

private static String standardDateipfad = "C:\\\\temp";

Oder für Einstellungen die Anwendungsübergreifend gelten sollen.

Bei Methoden verwendet man öfters mal static, da es Beispielsweise Methoden gibt, die nicht an eine Instanz gebunden sein müssen um dir von Nutzen zu sein:

private static String removeFileExtension(File file) {

String fileName = file.getName();
if (fileName.contains(".")) {
fileName = fileName.substring(0, fileName.lastIndexOf('.'));
}
return fileName;
}

Hier z.b. gebe ich als Parameter ein File in die Methode und bekomme den Dateinamen ohne Dateiendung zurück. Hier ist keine Instanz erforderlich wie oben beim Auto.

Der Aufruf sieht entsprechend so aus:

FileUtils.removeFileExtension(new File("C:\\\\temp\\\\test.xml"));
Antwort bewerten Vielen Dank für Deine Bewertung

static = von außen gleich (Pferd.anzahlGeborenerPferde)

nicht static = Element eines Objektes (Pferd.name) 

gilt für Variablen wie für Funktionen. Funktionen können außerdem die Variablen des Objektes nutzen; static Funktionen nur die statischen oder über den Objektzugriff (sozusagen ein shortcut auf this.machOderSeiIrgendwas)

Antwort bewerten Vielen Dank für Deine Bewertung