Willkommen zurück im zweiten Teil unserer Java Tutorial Reihe. In Teil 1 dieser Reihe haben wir bereits alle notwendigen Installationen durchgeführt und unser erstes Programm („Hallo-Welt“-Programm) geschrieben. Dieses Programm war allerdings sehr statisch. Aus diesem Grund möchten wir uns in diesem Artikel das Konzept der Java Variablen genauer ansehen, da wir mit diesen wie der Name es bereits verlauten lässt, unsere Programme variabler gestalten können.
Inhaltsverzeichnis
1. Was sind Java Variablen?
Beginnen wir also zunächst mit etwas Theorie, genauer gesagt mit der Frage:
Was sind Variablen?
Variablen sind nichts anderes als Datenbehälter. Bildhaft kann man sich diese also wirklich als eine Art Behälter vorstellen, in welchen man einen Wert (z. B. 20 oder "Tim") speichern kann.
Bei Textwerten ist allerdings darauf zu achten, dass diese immer zwischen doppelte hochgestellte Anführungsstriche geschrieben werden müssen. Dies haben wir bereits im "Hallo Welt"-Programm im Blogartikel zuvor gesehen, denn dort wurde der Wert „Hallo Welt“ auch zwischen zwei hochgestellte doppelte Anführungsstriche geschrieben. Dadurch teilen wir dem Computer nämlich mit, dass es sich hierbei um einen Textwert handelt.
Insgesamt gibt es zwei wichtige Informationen, welche eine Java Variable zwingend enthalten muss:
1.1. Information 1: Der Datentyp
Die erste Information ist der sogenannte Datentyp. Der Datentyp bestimmt, was in der Variable gespeichert werden darf. Der Wert, den wir also in eine Variable speichern, muss immer in Einklang mit dem Datentyp der Variable sein. Sollte dies Mal nicht der Fall sein, dann kommt es zu einem Fehler.
Es gibt beispielsweise Unterschiede zwischen Ganzzahlen und Fließkommazahlen (Zahlen mit einem Komma). Aber es gibt auch die eben schon kurz angesprochenen Textwerte wie beispielsweise "Tim" oder "Das ist ein Textwert". Solche Textwerte bezeichnet man in Programmiersprachen als sogenannte Strings. Neben den eben genannten Werten gibt es natürlich noch weitere Arten, für welche es jeweils einen ganz spezifischen Datentyp gibt. Diese ganzen Datentypen werden wir uns aber im nächsten Blogartikel noch im Detail ansehen.
Bis zu diesem Zeitpunkt musst Du also nur verstehen, dass der Datentyp einer Variable vorgibt, was in einer Variable für Arten von Werten gespeichert werden dürfen.
1.2. Information 2: Der Bezeichner
Die zweite wichtige Information ist der sogenannte Bezeichner einer Variable. Ein Bezeichner ist nichts anderes als der Name der Variable. Über diesen Bezeichner bzw. Namen kann man die Java Variable dann im Programm ansprechen.
Der Bezeichner wurde eingeführt, weil der Arbeitsspeicher alle Variablen intern über sogenannte Adressen anspricht, die für uns Menschen wahnsinnig kryptisch aussehen. Wir nehmen diese also eher als verwirrende Zahlenkombinationen war, und können deshalb auch nur sehr schlecht damit arbeiten. Dank dem Bezeichner können wir diese kryptischen Adressen nun allerdings durch einen „sprechenden“ Textwert ersetzen, mit welchem wir dann wesentlich intuitiver arbeiten können.
An dieser Stelle möchte ich auch noch mal besonders betonen, dass man den Bezeichner einer Variable immer „sprechend“ wählen sollte. Dies bedeutet nichts anderes, als das man bereits beim Lesen des Bezeichners einen Hinweis erhält, was in der Variable gespeichert ist.
Anders gesagt: Man sollte seine Variablen nicht variable1, variable2 und variable3 nennen, denn sobald das Programm größer wird, wird das Programm so einfach nur unlesbar, da niemand mehr genau nachvollziehen kann, was in welcher Variable steckt. Sollte man also zu so einer nicht sprechenden Benennung greifen, könnte man auch direkt mit den ursprünglichen Adressen arbeiten, mit welchem der Computer auch intern arbeitet.
Möchtest Du also beispielsweise in einer Variable das Alter einer Person speichern, dann könnte man dieser Java Variable den Bezeichner „age“ geben. Ein weiteres Beispiel wäre eine Variable, in welcher man den Namen einer Person speichert. Diese könnte man dann mit dem Bezeichner „name“ versehen.
Hier auch direkt der Hinweis, dass es generell sehr zu empfehlen ist, seinen Java-Code auf Englisch zu schreiben. Dadurch wird gewährleistet, dass das Programm von zahlreichen Menschen auf der Welt gelesen werden kann. Solltest Du hierauf allerdings überhaupt keine Lust haben, dann kannst Du Deine Java Variablen natürlich auch mit deutschen Bezeichnern versehen. Dem PC ist dies zumindest vollkommen egal 🙂
2. Java Variablen in der Praxis verwenden
Nachdem wir nun erfolgreich die Theorie zu Variablen durchgearbeitet haben, können wir uns die Variablen nun Mal in der Praxis ansehen. Genauer gesagt möchten wir nun einen Blick darauf werfen, wie man solche Java Variablen überhaupt erzeugen kann.
2.1. Java Variablen erzeugen - Variante 1
Der erste Baustein welchen man hierfür benötigt, ist die Festlegung des Datentyps. Für unser Beispiel verwenden wir jetzt mal den Datentyp „Integer“, welchen man mit „int“ abkürzt.
Da wir uns bisher noch nicht mit Datentypen befasst haben, eine kurze Info vorab: „int“ ist ein Datentyp, welcher nur Ganzzahlen aufnehmen kann. Also im Prinzip alle Zahlen, in denen kein Komma enthalten ist. Auf diesen und auch auf weitere Datentypen werden wir dann aber noch explizit im nächsten Blogartikel eingehen.
Neben dem Datentyp benötigt so eine Java Variable nun aber auch noch einen Bezeichner. Für unser Beispiel wählen wir den Bezeichner „age“, da wir hier drinnen das Alter von einer Person speichern möchten.
Wie Du sehen kannst, schreibst Du hierzu also nach dem Datentyp ein Leerzeichen und anschließend den Bezeichner.
Im nächsten Schritt muss nun ein Wert in diese Variable gelangen. Dies realisieren wir mithilfe des sogenannten Zuweisungsoperators. Der Zuweisungsoperator wird in Java durch ein „=“-Zeichen repräsentiert. Nach dem Bezeichner folgt also der Übersichtlichkeit halber erneut eine Leerzeile, dann der Zuweisungsoperator, der Übersichtlichkeit halber erneut ein Leerzeichen und nun legen wir fest, welcher Wert konkret in die Variable gespeichert werden soll.
Da wir den Datentyp „int“ gewählt haben, können wir jetzt nur Werte in dieser Java Variable speichern, die die Form einer Ganzzahl haben. Für unser aktuelles Beispiel wählen wir den Wert 27. Mithilfe eines abschließenden Semikolons beenden wir die Anweisung. Mit dieser Anweisung haben wir nun eine Variable erzeugt.
Zusammengefasst haben wir also Folgendes getan:
Zunächst haben wir einen Datentyp für die Variable festgelegt (in unserem Fall den Datentyp „int“). Anschließend haben wir einen sprechenden Bezeichner gewählt, über welchen wir diese Java Variable dann in Zukunft in unserem Programm ansprechen können (in unserem Beispiel den Bezeichner „age“). Daraufhin folgt der Zuweisungsoperator, welcher so arbeitet, dass er alles rechts von sich nimmt (in diesem Fall den Wert 27) und links von sich zuweist. In diesem Fall steht auf der linken Seite die Variable „age“, weshalb der Wert 27 in dieser gespeichert wird.
2.2. Java Variablen erzeugen - Variante 2
Neben der eben vorgestellten Vorgehensweise gibt es jetzt aber noch eine weitere Variante, wie man Java Variablen erzeugen kann. Und zwar könnte man auch so vorgehen:
Bei dieser Variante haben wir der Java Variable jetzt nicht direkt einen Wert zugewiesen, sondern diese lediglich erzeugt. In diesem Fall hat die Variable den Bezeichner „age2“. Erst in der nächsten Zeile sagen wir dann, dass der Variable „age2“ der Wert 29 zugewiesen werden soll.
2.3. Initialisierung vs. Deklaration
Was ist nun der Unterschied zwischen diesen zwei Varianten? Im Prinzip haben wir mit beiden Varianten das gleiche bewirkt, allerdings verwendet man zu deren Beschreibung unterschiedliche Fachbegriffe.
Im obigen Bild habe ich die Fachbegriffe als entsprechende Kommentare hinten angefügt.
Ein Kommentar ist im Übrigen nichts anderes als eine Notiz innerhalb des Codes.
Man startet einen einzeiligen Kommentar, in dem man in der jeweiligen Zeile einen Doppel-Slash (//) setzt. Alles was man nun bis zum Zeilenende nach diesem Doppel-Slash hinschreibt, wird als Kommentar gewertet.
Kommentare haben die Besonderheit, dass sie uns Menschen als Notizen innerhalb unseres Codes dienen, aber vom Computer überhaupt nicht beachtet werden. Das heißt, sobald das Programm ausgeführt wird, werden alle Kommentare einfach ignoriert und übersprungen. Ich kann Dir die zahlreiche Verwendung von Kommentaren im Übrigen nur ans Herz legen, dann dadurch gewährleistest Du, dass Du und auch andere Personen Deinen Code zu einem späteren Zeitpunkt noch verstehen können.
Nun aber wieder zurück zu den Fachbegriffen, die im Bild wie gesagt bereits eingefügt wurden. Bei der ersten Variante spricht man von der sogenannten Initialisierung. Wir erzeugen hier also eine Variable und weisen dieser sofort (initial) einen Wert zu.
In der zweiten Variante erzeugen wir die Variable, aber weisen dieser nicht initial einen bestimmten Wert zu. Hierbei spricht man dann von einer Deklaration. In Zukunft sagen wir also nicht mehr, dass wir eine Variable erzeugen, sondern wir deklarieren diese. Und Deklaration bedeutet dabei einfach nur, dass wir eine Variable erzeugen und diese dem Compiler bekanntmachen. Wir zeigen dem Compiler damit also, dass diese Variable von nun an existiert.
In der darauffolgenden Zeile spricht man dann von einer einfachen Zuweisung. Bei einer Zuweisung ist noch anzumerken, dass man bei der Variable nun nicht mehr den Datentyp mit angibt. Den Datentyp geben wir für jede Variable nämlich immer nur einmal an, und zwar entweder bei der Initialisierung oder bei der Deklaration. Also immer nur dann, wenn wir sie das erste Mal dem Compiler bekanntmachen. Fortan weiß der Compiler dann automatisch, welchen Typ die Variable besitzt, weshalb wir dann auch nur noch mit dem Bezeichner der Variable arbeiten.
2.4. Widerspruch beim Begriff Initialisierung?
Falls Du nun ganz genau mitgedacht hast, dann stellst Du Dir eventuell eine Frage:
Initialisierung bedeutet also, dass wir der Variable initial einen Wert zuweisen. Das Gleiche machen wir doch bei der Variable „age2“ auch? Zwar in der zweiten Zeile durch eine extra Anweisung, aber auch hierbei handelt es sich doch um den ersten, also initialen Wert, welchen wir der Variable zuweisen?
Falls Du Dir diese Frage gestellt hast, dann hast Du auf jeden Fall sehr genau mitgedacht. Allerdings stimmt diese Theorie nicht ganz, denn sobald man eine Variable deklariert, wird dieser unmittelbar ein sogenannter Default-Wert zugewiesen. Dies ist in Java einfach so festgelegt. Bei Ganzzahlen (also beim Datentyp „int“) ist dies beispielsweise der Wert 0. Intern wird also sofort bei der Deklaration noch der Wert 0 zugewiesen.
Das ist nun auch der Grund, wieso man in der zweiten Zeile dann nicht mehr von einer Initialisierung, sondern einfach nur noch von einer Zuweisung spricht, denn es ist ja nicht mehr der erste Wert, der dieser Variable zugewiesen wird.
Soviel mal zur Deklaration und Initialisierung von Variablen.
2.5. Mit Variablen arbeiten
Mit den eben erzeugten Java Variablen können wir nun natürlich im weiteren Programmverlauf arbeiten. Wir könnten mit dem Wissen aus dem vorherigen Blogartikel bereits den Inhalt der Variable auf der Konsole ausgeben.
Hierzu verwenden wir wieder die bereits bekannte Methode Systen.out.println(). Dieser haben wir ja zuvor den gewünschten String (Textwert) innerhalb der runden Klammern als Parameter mitgegeben, welcher dann auf der Konsole ausgegeben wurde. Falls wir nun den Inhalt der Variable ausgeben möchten, müssen wir stattdessen einfach nur den Bezeichner der Variable als Parameter übergeben.
Ich gebe als Parameter beispielsweise mal den Bezeichner „age“ mit. Sobald wir das Programm nun ausführen, wird auf der Konsole tatsächlich der Inhalt der Variable „age“ ausgegeben, also 27.
Wenn wir stattdessen „age2“ als Parameter übergeben, wird folglich die 29 ausgegeben, da dieser Wert aktuell in der Variable „age2“ gespeichert ist.
Das Konzept der Java Variablen sollte durch diesen Artikel nun etwas verständlicher geworden sein. Um ein vollwertiges Verständnis zu diesem Konzept zu erhalten, solltest Du Dir unbedingt den nächsten Blogartikel durchlesen. In diesem werden wir uns im Detail das Konzept der Datentypen ansehen, welches in starker Verbindung zu dem hier vorgestelltem Konzept der Variablen steht.