Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.
start:info:11if:04_variablen 04.09.2008 20:03 | start:info:11if:04_variablen 23.10.2013 10:12 aktuell | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Variablen ====== | ====== Variablen ====== | ||
- | FIXME | + | **In Java gibt es **4 Arten von Variablen**:** |
+ | |||
+ | {{ :start:info:11if:schublade.jpg|Schublade}} | ||
+ | * Attribute (auch Instanzvariablen genannt) | ||
+ | |||
+ | * formale Parameter | ||
+ | |||
+ | * lokale Variablen | ||
+ | |||
+ | * Klassenvariablen (dazu später mehr) | ||
+ | |||
+ | {{:start:info:11if:06var.gif|Arten von Variablen}} | ||
+ | |||
+ | ===== Gültigkeit von Variablen ===== | ||
+ | |||
+ | Der **Gültigkeitsbereich** einer Variablen ist der Teil eines Programms, in dem auf die Variable zugegriffen werden kann - nur da kann ich also mit der Variablen arbeiten. | ||
+ | |||
+ | * **Instanzvariablen** (Attribute) werden üblicherweise als private deklariert; Sie sind deshalb nur in den Methodenrümpfen der eigenen Klasse gültig. | ||
+ | |||
+ | * Der Gültigkeitsbereich einer **lokalen Variable** erstreckt sich von ihrer Deklaration bis zum Ende des einschließenden Blocks. | ||
+ | |||
+ | * Der Gültigkeitsbereich eines **formalen Parameters** beschränkt sich auf den Rumpf des zugehörigen Blocks. | ||
+ | |||
+ | **Instanzvariablen** (Attribute) können durch **lokale Variablen** und **formale Parameter** (der selben Klasse) mit gleichem Namen verdeckt werden. Dann kann auf die Attribute nur noch per ''this.''-Operator zugegriffen werden.\\ | ||
+ | |||
+ | **Beispiel für Gültigkeitsbereiche**\\ | ||
+ | {{:start:info:11if:06var2.gif|Beispiel für Gültigkeitsbereiche}} | ||
+ | |||
+ | ===== Lebensdauer von Variablen ===== | ||
+ | |||
+ | Die **Lebensdauer von Variablen** ist die Zeit von der Erzeugung der Variablen bis zu dem Zeitpunkt, an dem sie im Speicher gelöscht wird. | ||
+ | |||
+ | * Die **Instanzvariablen** (Attribute) eines Objekts werden erzeugt, wenn das Objekt konstruiert wird. Diese Variable lebt bis der Speicherbereinigungsalgorithmus das Objekt beseitigt. | ||
+ | |||
+ | * Eine **lokale Variable** wird bei ihrer Deklaration erzeugt und lebt bis der einschließende Block verlassen wird. | ||
+ | |||
+ | * Ein **formaler Parameter** ist eine Art lokale Variable des Methoden- bzw. Konstruktorrumpfs. Er wird beim Aufruf der Methode bzw des Konstruktors erzeugt und nach Ausführung wieder gelöscht. | ||
+ | |||
+ | **Initialisierung von Variablen** | ||
+ | |||
+ | * **Instanzvariablen** (Attribute) werden automatisch bei der Erzeugung mit einem Standardwert initialisiert (0 für Zahlen, false für den boolean-Typ und null für Objekttypen (wie String, Person etc.), falls der Initialwert nicht explizit spezifiziert wurde (im Konstruktor oder bei der Deklaration). | ||
+ | |||
+ | * **Parametervariablen** werden mit der lokalen Kopie der Werte der aktuellen Parameter initialisiert. | ||
+ | |||
+ | * **Lokale Variablen** müssen durch das Programm explizit initialisiert werden und dürfen/können vor der Initialisierung nicht benutzt werden. | ||
+ | |||
+ | **Fragen** | ||
+ | ,,,,,, | ||
+ | - Es wird ein Objekt der Klasse Zaehler erzeugt. Welche Ausgabe liefert dann der Aufruf von main()?\\ <code java> | ||
+ | public class Zaehler { | ||
+ | // Attribute | ||
+ | private int zaehlerstand; | ||
+ | private int x; | ||
+ | private int y; | ||
+ | |||
+ | // Konstruktor | ||
+ | public Zaehler() { zaehlerstand = 100; x = 3; y = 5; } | ||
+ | // Methoden | ||
+ | public | ||
+ | void | ||
+ | erhoeheZaehlerstand( | ||
+ | int | ||
+ | x) { zaehlerstand = zaehlerstand + x + y; System.out.println(zaehlerstand); zaehlerstand = zaehlerstand + | ||
+ | this | ||
+ | .x + | ||
+ | this | ||
+ | .y; System.out.println(zaehlerstand); y = 300; } | ||
+ | public | ||
+ | void | ||
+ | erhoeheNochEinmalZaehlerstand( | ||
+ | int | ||
+ | x) { | ||
+ | int | ||
+ | y = 100; zaehlerstand = zaehlerstand + x + y; System.out.println(zaehlerstand); zaehlerstand = zaehlerstand + | ||
+ | this | ||
+ | .x + | ||
+ | this | ||
+ | .y; System.out.println(zaehlerstand); y = 300; } | ||
+ | public | ||
+ | void | ||
+ | main() { System.out.println( | ||
+ | "Und hier die Ergebnisse:" | ||
+ | ); erhoeheZaehlerstand(50); erhoeheNochEinmalZaehlerstand(80); System.out.println(x); System.out.println(y); } } | ||
+ | 2. Nenne die Unterschiede zwischen den Begriffen "Attribut", "Parameter" und "Variable". | ||
+ | |||
+ | ,,,,,, |