Variablen
Variablenarten
Variablentypen
Sichtbarkeit von Variablen
Das Symbol „=“
Konstanten
Java kennt drei Arten von Variablen: Instanzvariablen, Klassenvariablen und lokale Variablen.
public class Example {
static boolean existInstance = false;
int n = 0;
public Example() {
existInstance = true;
....
}
public void doSomething() {
float z = 2.0f;
...
}
}
In diesem Beispiel ist n eine Instanzvariable der Klasse Example und gemäß dieser Klassendefinition besitzt jede Instanz der Klasse Example (mit anderen Worten: jedes Objekt vom Typ Example) eine solche Variable, also eine integer-Variable mit der Bezeichnung „n“.
existInstance ist wegen des vorangestellten Schlüsselworts static eine Klassenvariable. Das bedeutet, dass existInstance (nur) zur Klasse Example gehört, und zwar unabhängig davon, ob eine Instanz dieser Klasse existiert oder nicht.
Instanzvariablen und Klassenvariablen werden oft unter dem Begriff Membervariablen (member variables) zusammengefasst.
z ist eine lokale Variable. Auf z kann nur innerhalb der Methode doSomething() zugegriffen werden. Vor der ersten Verwendung einer lokalen Variablen muss diese zwingend initialisiert werden, das heißt, ihr muss ein konkreter Wert zugewiesen werden!
Globale Variablen gibt es in Java nicht.
Jede Variable ist in Java typisiert. Das bedeutet: eine Variable ist entweder von elementarem Typ (int, float, boolean, ...), also eine sogenannte primitive Variable oder eine Referenzvariable, also eine Variable, die auf ein Objekt weist, welches über diese Referenzvariable angesprochen werden kann. Anschaulich kann man sich eine primitive Variable als eine Art Behälter vorstellen, in welchem sich ein Wert (eine Zahl, ein Zeichen oder ein Wahrheitswert) befindet; eine Referenzvariable ist etwas, was auf ein Objekt eines bestimmten Typs zeigen soll (nachdem sie entsprechend deklariert wurde) und was auf ein Objekt tatsächlich zeigt (nachdem das erzeugte Objekt durch sie referenziert wurde). (vgl. Instanziieren von Klassen).
Mit den vorangestellten Zugriffsmodifikatoren public, protected und private wird bestimmt, wie auf Variablen zugegriffen werden darf:
public: Auf die Variable kann von überall
zugegriffen werden.
protected: Der Zugriff auf die Variable ist nur innerhalb der jeweiligen Klasse oder von abgeleiteten Klassen
aus möglich.
private: Der Zugriff auf die Variable ist nur innerhalb der jeweiligen Klasse
möglich.
Ist dem Bezeichner einer Variablen kein Modifikator vorangestellt, so kann auf diese Variable nur aus Klassen zugegriffen werden, die sich im selben Paket befinden.
Durch die Kapselung (encapsulation) der Daten eines Objekts infolge einschränkender Zugriffsmodifikatoren innerhalb der jeweiligen Klasse kann der direkte Zugriff von „außerhalb“ auf diese Daten unterbunden werden. Damit ist es möglich, den Zustand eines Objektes vor anderen Objekten zu verbergen (vgl. Kapselung der Methoden eines Objektes).
Das Symbol „=“ ist ein Zuweisungsoperator. Links vom Zuweisungsoperator steht der Bezeichner (identifier) einer Variable, rechts davon steht der Wert, der dieser Variable zugewiesen wird. Ein Ausdruck der Art „identifier = value“ heißt Zuweisung.
Beispiel 1.
float z;
z = .6E2f;
Es wird der primitiven Variablen z vom Typ float das Literal .6E2f zugewiesen, welches die Zahl 60,0 repräsentiert (vgl. Elementare Datentypen).
Beispiel 2.
String str;
str = ".6E2f";
Der Referenzvariable str wird die Zeichenkette ".6E2f" zugewiesen mittels derer str auf das von ihr referenzierte String-Objekt zugreifen kann. (vgl. Instanziieren von Klassen).
Beispiel 3. Unter der Voraussetzung, dass mit der ersten Zeile des Programmquellcodes
import java.awt.Button;
das Paket java.awt.Button eingebunden wurde, wird durch
Button button;
button = new Button();
der Referenzvariable button eine Zeichenkette zugewiesen, die Informationen zum hier instanziierten Button-Objekt beinhaltet und das durch button referenzierte Objekt repräsentiert. Diese Zeichenkette wird durch die zu jedem Objekt gehörende Methode toString() zurückgeliefert. Handelt es sich bei Button() um den nicht überschriebenen vordefinierten Konstruktor der Klasse Button, so ergibt button.toString() die Zeichenkette "java.awt.Button[button0,0,0,0x0,invalid,label=]".
Es gibt in Java nicht „wirkliche“ Konstanten, sondern es sind dies mit dem Modifikator final deklarierte primitive Variablen, die ihren einmal zugewiesenen Wert nicht ändern können oder aber mit final deklarierte Referenzvariablen, die auf unveränderliche Objekte zeigen. Zudem sind Konstanten immer Klassenvariablen. Die Bezeichner von Konstanten bestehen in der Regel aus Großbuchstaben, manchmal unter Verwendung des Unterstrichs.
Beispielsweise wird durch die mit dem Interface javax.swing.WindowConstants bereitgestellten int-Konstanten DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE und HIDE_ON_CLOSE festgelegt, was passiert, wenn das CLOSE-Symbol in der Titelzeile eines Fensters angeklickt wird:
import javax.swing.JFrame;
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Die in der Klasse java.awt.Color definierten Konstanten BLACK, BLUE, CYAN, u.s.w. verweisen auf finale Objekte vom Typ Color.
JFrame frame = new JFrame();
frame.getContentPane().setBackground(Color.WHITE);
Mit dem Schlüsselwort enum ist es möglich, eigene Datentypen zu kreiieren, und zwar so, dass einer Variable von solchem Typ selbstdefinierte konstante Werte zugewiesen werden können:
enum Position {BUTTOM, CENTER, TOP}
Position center = Position.CENTER;