Koordinatengrafik mit Java
HomeAufgabenDruckenJava-Online

Variablen in Java

Der Umgang mit Variablen erfordert in Java besondere Sorgfalt, da man sich an verschiedene Regeln halten muss.

Variablen vom Basis-Datentyp:

Variablen vom Basis-Datentyp sind Speicherbereiche, in welche man Daten, die im Verlauf des Programms benötigt werden, speichern kann. Dabei unterscheidet man im Wesentlichen folgende Datentypen:
int ganze Zahlen von -2 hoch 31 bis 2 hoch 31-1
long ganze Zahlen von -2 hoch 63 bis 2 hoch 63-1
double Dezimalzahlen mit der doppelten Genauigkeit
boolean kann nur die werte 1 (true) und 0 (false) annehmen
char Zeichen (z.B. eine Tastaturtaste)

Datentypen "String" und "Array" sind keine Basistypen.

Vor der ersten Verwendung einer Variablen vom Basistyp muss der Name, Datentyp und Startwert zugewiesen werden. Man spricht dabei von Deklaration und Initialisierung der Variablen.

Deklaration einer Variablen macht Name und Typ der Variablen bekannt und reserviert entsprechend Platz im Speicher.
Initialisierung ordnet einer Variablen von Basistyp einen Wert zu.

Die Deklaration und Initialisierung können in einem Schritt zusammengefasst werden:
int i = 0;
double x = 3.14;
boolean ungerade = true;

Für Variablennamen gelten folgende Regeln:

Referenzvariablen

Die Referenzvariablen besitzen den Datentyp einer Klasse. Bei ihrer Deklaration wird noch kein Objekt erzeugt, sondern lediglich ein Verweis (Referenz) auf ein Objekt. Das Objekt selbst erzeugt man mit dem Schlüsselwort new. Man nennt es eine Instanz der Klasse. Oft kombiniert man auch hier die Deklaration und die Instanzierung z.B. GPanel p   = new GPanel() oder Turtle john = new Turtle().

Instanzvariablen, lokale Variablen, Sichtbarkeit

Jede Variable in grundsätzlich nur in dem Block sichtbar, in dem sie deklariert wurde. Variablen, die im Kopf der Klasse (ausserhalb der main-Methode) deklariert sind, werden als Instanzvariablen bezeichnet. Sie sind in allen Methoden sichtbar. Sie werde automatisch mit einem Nullwert initialisiert. Lokale Variablen sind gegenüber Instanzvariablen vorzuziehen, da sie gegenüber ungewollten Veränderungen besser geschützt sind.

Im folgenden Beispiel wird die Variable i als lokale Variable in der for-Schleife deklariert und ist nur in diesem Block sichtbar. Wenn die gleiche Variable später in der Zeile p. fillRectangle ( i, i, i  + 3 , i  + 3 ) ;  verwendet wird, erscheint eine Fehlermeldung.

// VariablenEx1.java

import ch.aplu.util.*;
import java.awt.Color;

class VariablenEx1
{
  VariablenEx1()
  {
    GPanel p = new GPanel(010010);

    for (int i = 0; i <= 5; i++)
    {
      p.fillRectangle(i, i, i + 1, i + 1);
    } 
    
    p.color(Color.red);
    p.fillRectangle(i, i, i + 3, i + 3);   // <-- Fehler
  }

  public static void main(String[] args)
  {
    new VariablenEx1();
  }
}
   

Im Beispiel VariablenEx2.java ist der Fehler behoben. Die Variable i wird ausserhalb des for-Schleife-Blocks deklariert und ist daher auch ausserhalb dieses Blocks sichtbar.

// VariablenEx2.java

import ch.aplu.util.*;
import java.awt.Color;

class VariablenEx2
{
  VariablenEx2()
  {
    GPanel p = new GPanel(010010);

    int i;
    for (= 0; i <= 5; i++)
    {
      p.fillRectangle(i, i, i + 1, i + 1);
    } 
    
    p.color(Color.red);
    p.fillRectangle(i, i, i + 3, i + 3)
  }

  public static void main(String[] args)
  {
    new VariablenEx2();
  }
}