BlueJ (Java) Tutorial 002
Der Bordcomputer unseres Raumschiffes ist gestartet. Zeit ihn mit ein wenig Intelligenz auszustatten und unser erstes Programm ein wenig interaktiver zu gestalten. Dafür legen wir unsere ersten Variablen an und verarbeiten diese später mit if-Bedingungen.
Du bist bereits fit im Umgang mit einfachen Variablen? Dann überspring doch dieses Tutorial und schau dir direkt das nächste an (kommt bald)
Variablen
"Lass uns doch morgen um 14 Uhr im Cafe treffen. Und was ich dir noch erzählen wollte..."
Kaum habt ihr aufgelegt überlegt ihr. Wann hatten wir jetzt gesagt wollten wir uns treffen? Um 1 oder doch später? Oder hatte sie nicht was von 15 Uhr erzählt? Das mit dem Merken ist immer so eine Sache...
Wenn unser Computer ein Programm ausführt, muss er sich eine ganze Menge merken. Während ein Programm läuft benutzt er dafür Variablen, die wir uns ein wenig als das Kurzzeitgedächtnis unseres Computers vorstellen können. Etwas nüchterner: In Variablen können wir Werte "zwischen"speichern, die wir an anderer Stelle in unserem Programm wieder benötigen. So braucht man sie zum Beispiel für die Verarbeitung von Nutzereingaben, was wir uns im nächsten Tutorial einmal genauer anschauen wollen.
Das Konzept von Variablen kann auf den ersten Blick kompliziert sein. Daher stellen wir uns eine Variable als eine Kiste, Schublade oder Box vor, in die wir Dinge reinpacken können. Da unser Programm viele Variablen braucht und wir ja auch in der "echten" Welt schnell durcheinander kämen, welche Kiste was beinhaltet, beschriften wir sie mit einem eindeutigen Namen. Eindeutig bedeutet, dass wir keiner Kiste, also keiner Variable einen Namen geben können, den wir schon verwendet haben. Ja, in "echt" bräuchtet ihr für bestimmte Dinge sicherlich mehrere Kisten, aber auch hier wüssten wir dann nicht mehr welches genaue Paar Socken in der einen und welches in der anderen Kiste wäre.
So solltet ihr nun ein Bild wie dieses in eurem Kopf haben:
Datentypen
Variablen in Java sind stets nur für einen ganz bestimmten Typ von "Dingen" geeignet. Das heißt ihr könnt in eine Kiste, die für Socken gedacht ist auch nur Socken und in eine Kiste, die für Hosen gedacht ist, nur Hosen packen. Man könnte sich vorstellen, dass beispielsweise in Kisten für Socken ganz bestimmte Einsätze sind, damit die Socken nicht durcheinander kommen. Ja, so ganz zufrieden bin ich mit dieser Analogie noch nicht, aber das ist schon ok.
Warum sind sogenannte Datentypen jetzt sinnvoll und wichtig. Nun stellt euch vor ihr macht eine Umfrage und wollt eure Ergebnisse am Ende auswerten. Wenn ihr euch nicht so wahnsinnig viele Gedanken um euren Fragebogen gemacht habt, werdet ihr schmerzlich feststellen, das die Befragten auf Fragen wie "Wie gut findest du das neue LEGO Set, Luke Skywalkers Landspeeder?" (als ich dieses Tutorial geschrieben habe war gerade May the 4th und das Set war mir ins Auge gefallen, aber vielleicht irgendwann) völlig verschieden antworten, zum Beispiel mit:
- Richtig gut!
- Naja
- 5
- 100
Jetzt wollt ihr ein schönes Diagramm erstellen, dass euch zeigt, wie beliebt das Set bei euren Befragten ist. Und schon steht ihr vor einem Problem. Richtig gut!, was heißt das eigentlich? Ist das jetzt so richtig richtig gut oder einfach nur richtig gut (diesen Satz in Schriftform rüberzubringen ist tatsächlich nicht so einfach wie ich dachte, aber ihr versteht den Punkt oder?)? Oder ist das sogar ironisch gemeint? Ach, das macht doch keiner bei so einem Fragebogen. Oder doch?
Das gleiche gilt für Naja. Naja, es ist ganz spannend, aber... Naja kann vieles bedeuten. Schauen wir mal die anderen Antworten an. 5... 5 Punkte? Die Schulnote 5? Ach mist. Aber 100 meint jetzt 100 Punkte oder? Das ist vielleicht noch die "sauberste" Antwort. Hättet ihr mal von vornherein feste Antwortmöglichkeiten oder wenigstens feste Datentypen vorgegeben. So hättet ihr beispielsweise vorgeben können, dass nur in Punkten (also mit einer Zahl zwischen 0 und 100) geantwortet werden kann. Oder, dass nur mit Gut oder Schlecht geantwortet wird. Oder ihr hättet um einem Freitext bitten können, wenn ihr eine Meinungsübersicht und kein stumpfes Diagramm hättet erstellen wollen. Naja, beim nächsten Mal.
Datentypen in Java
Wir öffnen unser Raumschiff-Projekt und gehen in den Quelltexteditor. Da der Code immer von oben nach unten ausgeführt wird schreiben wir einfach unter der Begrüßung in der activate()
-Methode weiter.
In diesem Tutorial wollen wir uns mit drei ersten Datentypen befassen und Variablen diesen Typs erstellen:
- int
- String
- boolean
In Java legen wir eine neue Variable nach folgendem Schema an:
<Datentyp> <Name der Variable>;
Unsere Codezeile zum Anlegen einer neuen Variable besteht aus dem gewünschten Datentyp für die Variable, dem Namen der Variable und einem Semikolon am Ende der Zeile.
Wichtig: Eure angelegten Variablen kennt der Computer nur während euer Programm läuft (also in unserem Beispiel nur solange die activate()
-Methode abgearbeitet wird. Danach vergisst der Computer die von euch erstellten Variablen. Startet ihr die Methode (euer Programm) erneut, legt er sie wieder neu an!
Das Semikolon gehört in Java ans Ende der Zeile. Und zwar immer dann, wenn die Zeile aus einer Anweisung besteht. Ihr entwickelt recht schnell ein Gefühl dafür, wo ein Semikolon und wo kein Semikolon stehen muss. Die Daumenregel, die ihr euch erstmal merken könnt ist, dass ihr immer dann ein Semikolon macht, wenn ihr dem Computer einen klaren Befehl gebt. Zum Beispiel: "Lege eine neue Variable an".
Wollen wir der Variable direkt einen Wert zuweisen (also in die Kiste etwas reinpacken) machen wir das, indem wir hinter den Namen der Variablen ein =
und dahinter den Wert schreiben, den unsere Variable speichern soll.
<Datentyp> <Name der Variable> = <Initialwert>;
Wichtig: Wollen wir den Wert einer Variablen ändern oder eine noch nicht initialisierte Variable in einer neuen Zeile initialisieren, dürfen wir nicht noch einmal den Datentyp angeben. Ansonsten denkt der Computer, dass wir eine neue Variable erstellen wollen, das ist aber gar nicht unser Wunsch. Einen Wert weisen wir dann ohne Angabe des Datentyps zu (Zeile 2):
<Datentyp> variable1;
variable1 = <Wert den wir unserer Variable zuweisen wollen>
Schauen wir uns das Ganze nun mal konkret für die drei oben genannten Variablentypen an.
Integer-Variablen
Eine neue Variable die Typs Integer enthält ganze Zahlen. Also Zahlen wie 5, 25, 0 oder -2513. Es gibt tatsächlich eine größte (2147483647) und kleinste Zahl (-2147483648), die wir in einer Integer-Variable speichern können. Benutzt ihr zu große (oder zu kleine) Zahlen, werdet ihr bei Berechnungen merkwürdige Ergebnisse erhalten. Behaltet das im Hinterkopf, falls ihr vorhabt mit sehr sehr großen Zahlen zu hantieren.
Sorgen wir nun mal dafür, dass sich der Computer eine Zahl merkt. Euer Programm könnte dann nun so aussehen:
public class Raumschiff
{
public void activate() {
System.out.println("Hello World");
int zahl1 = 100;
}
}
Die 5. Zeile eures Programms sorgt dafür, dass eine neue Variable mit dem Namen zahl1 erstellt und darin der Wert 100 gespeichert wird. Ihr könnt euch vorstellen, dass ihr euch eine neue Kiste nehmt, in die ihr Zahlen legen könnt. Diese beschriftet ihr mit dem Namen zahl1 und legt eure 100 auf die ihr so ganz besonders stolz seid vorsichtig hinein. Das gleiche, was diese eine Zeile macht, würden übrigens die folgenden beiden Zeilen machen. Nur, dass ihr hier erst die Variable anlegt
int zahl1;
zahl1 = 100;