Variablenfelder (2)
Was man bei der Verwendung von Feldern beachten muss
Im Programmcode merkt sich Java nicht die in einem Feld gespeicherten Werte sondern nur die Speicheradresse des Feldes. Deshalb kann man den Inhalt des Feldes nicht durch eine einfache Wertzuweisung kopieren, sondern muss eine Schleife schreiben, die das Feld Wert für Wert kopiert.
public class Felder_2_Vorsicht {
public static void main(String[] args) {
int[] lotto = new int[6];
// So legt man ein Feld mit sechs Variablen an.
// Zahlen werden automatisch mit 0 initialisiert.
lotto[0] = 7;
// So kann man auf jede einzelne Variable zugreifen.
lotto[1] = 35;
lotto[2] = 31;
lotto[3] = 12;
lotto[4] = 34;
lotto[5] = 19;
int[] lottoB = {15, 3, 1, 38, 19, 49}; //
So lässt sich ein Feld beim Anlegen initialisieren
lottoB = lotto;
// Vorsicht! Diese Form der Wertzuweisung tauscht nur
// die Referenz aus. Der Name lottoB verweist nun auf
// dieselbe Speicherstelle wie der Name lotto.
// Die zugewiesenen Daten sind nicht mehr erreichbar.
lotto[5] = 21;
// Beweis: Wenn eine der Variablen von lotto geändert wird,
// ändert sich gleichzeitig der entsprechende Wert von lottoB.
lottoB = new int[6];
// So geht's besser: Wir reservieren einen neuen Speicherplatz
// für das Feld lottoB ...
for (int i=0; i<lotto.length-1; i++) {
lottoB[i]=lotto[i];
// und kopieren die einzelnen Variablen mit einer Schleife.
}
// (lotto.length liefert die Anzahl der Elemente im Feld.)
lotto[3]=6;
// Bei einer Änderung von lotto...
// bleibt lottoB nun unbehelligt.
}
}
Back to the roots: Programmstart mit Parametern
Wir wandeln unser allererstes Programm noch einmal ab. Diesmal grüßen wir nicht die Welt, sondern beliebige Personen.
class Hallo {
public static void main(String[] args) {
System.out.println("Guten
Morgen, "+args[0]+" und "+args[1]+". Wie geht's?");
}
}
Kompilieren Sie dieses Programm , öffnen Sie die Konsole und geben Sie ein java Hallo Max Moritz.
Sie erinnern sich: java ruft die JVM (Java Virtual Machine) auf, Hallo ist der Name des auszuführenden Programms.
Das Wörter "Max" und "Moritz" werden aus der Eingabe gelesen, in ein Stringfeld mit dem Namen args gespeichert und können dort abgerufen werden. Der erste eingegebene String ist unter args[0] verfügbar, der zweite unter args[1] usw. Die Parameter müssen nicht der Reihe nach verwendet werden und auch nicht alle benutzt werden. Natürlich aber dürfen Sie nicht mehr Argumente abfragen, als der Benutzer eingibt. Wie viele das waren, können Sie mit args.length herausfinden.
Aufgaben: