Dienstag, 28. Februar 2012

Kleinigkeiten: Lokal vs. Static

Natürlich ist Java sicher und der Compiler findet mit traumwandlerischer Sicherheit fast alle Fehler, zumindest viele. Sagen wir: Er findet Fehler, manchmal.

Es gibt durchaus ein paar kleine, klassische Fallstricke aus unserer Rubrik Kleinigkeiten über die zumindest Anfänger stolpern können, echte Profis hingegen sind natürlich frei von so einem Makel. Wir haben eine kleine Klasse mit einer statischen Variable, die wir auf der Konsole ausgeben.
public class KleineKlasse {

  private static int irgendeineVariable = 1001;

  public static void main(String[] args) {

    System.out.println(irgendeineVariable); 
    System.out.println(KleineKlasse.irgendeineVariable);
  }
}
Erwartungsgemäß ist die Ausgabe in beiden Fällen "1001". Eine statische Variable darf in der eigenen Klasse mit "Klassenname.Variablenname" oder nur mit dem Variablennamen aufgerufen werden. Interessant wird es, wenn wir uns eine lokale Variable mit dem gleichen Namen definieren - erlaubt ist was gefällt, nicht was vernünftig ist. Wir ergänzen unser Beispiel also indem wir nach der ersten Ausgabe eine neue Variable mit gleichem Namen als String deklarieren.

public class KleineKlasse {

  private static int irgendeineVariable = 1001;

  public static void main(String[] args) {

    System.out.println(irgendeineVariable); 
    System.out.println(KleineKlasse.irgendeineVariable);
    
    String irgendeineVariable = new String("Ich ein String!");

    System.out.println(irgendeineVariable); 
    System.out.println(KleineKlasse.irgendeineVariable);

    System.out.println(irgendeineVariable.getClass());
    System.out.println(irgendeineVariable instanceof java.lang.String);
  }
}
Die Ausgabe sieht erwartungsgemäß jetzt etwas anders aus. Da in Java ein String ein Objekt ist, können wir die lokale Variable auf bekannten Wegen nach ihrer Objektart befragen - vor der Deklaration hätte der Compiler mit uns deswegen noch geschimpft.

Also Obacht geben wenn man mit statischen Variablen arbeitet, aber partout nicht genug Namen für Variablen einfallen wollen.

Keine Kommentare:

Kommentar veröffentlichen