Java lernen – kurz & gut - Michael Inden - E-Book

Java lernen – kurz & gut E-Book

Michael Inden

0,0

Beschreibung

Der praktische Schnelleinstieg in Java - Kompakt vermittelt dieses Buch den Umgang mit Java - Ein verständlicher Einstieg erlaubt direktes Ausprobieren und verschafft schnelle Erfolgserlebnisse - Sie lernen die Java-Grundlagen und einen guten Stil beim Entwickeln Dieses Buch ist für vielbeschäftigte Programmierer:innen, die eine knappe und dennoch gut verständliche Einführung in Java als eine seit Jahren populäre Programmiersprache suchen. Java lernen – kurz & gut bietet einen unterhaltsamen Einstieg und informiert Sie über viele Java-Themen, die Ihnen helfen werden, schnell durchzustarten: - Installation von Java und einer Entwicklungsumgebung  - Schnelleinstieg in die wichtigsten Aspekte  - Basisbausteine wie Strings, Arrays, Zufallszahlen, Fallunterscheidungen und Schleifen  - Klassen und objektorientierte Programmierung  - Datencontainer wie Listen, Mengen und Maps  - Fortgeschrittene Themen zu Collections wie Lambdas und Streams  - Datumsverarbeitung inklusive Berechnungen  - Dateiverarbeitung und Behandlung von Fehlern mit Exceptions Trotz seines kompakten Formats liefert dieses Buch eine fundierte Einführung und eine Fülle an leicht nachvollziehbaren Beispielen, die zum Experimentieren einladen. Es unterstützt Sie optimal dabei, Ihre Java-Kenntnisse auf- und auszubauen. Insbesondere wenn Sie bereits ein wenig mit z.B. C++ oder C# vertraut sind, ist dieses Buch die ideale Wahl, um fundiert in Java einzusteigen und eigene Experimente zu beginnen.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 323

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Copyright und Urheberrechte:

Die durch die dpunkt.verlag GmbH vertriebenen digitalen Inhalte sind urheberrechtlich geschützt. Der Nutzer verpflichtet sich, die Urheberrechte anzuerkennen und einzuhalten. Es werden keine Urheber-, Nutzungs- und sonstigen Schutzrechte an den Inhalten auf den Nutzer übertragen. Der Nutzer ist nur berechtigt, den abgerufenen Inhalt zu eigenen Zwecken zu nutzen. Er ist nicht berechtigt, den Inhalt im Internet, in Intranets, in Extranets oder sonst wie Dritten zur Verwertung zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und eine gewerbliche Vervielfältigung der Inhalte wird ausdrücklich ausgeschlossen. Der Nutzer darf Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte im abgerufenen Inhalt nicht entfernen.

Java lernen

kurz & gut

Michael Inden

Michael Inden

[email protected]

Lektorat: Dr. Benjamin Ziech

Copy-Editing: Ursula Zimpfer, Herrenberg

Satz: Michael Inden

Herstellung: Stefanie Weidner, Frank Heidt

Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print978-3-96009-204-9

PDF978-3-96010-708-8

ePub978-3-96010-709-5

mobi978-3-96010-710-1

1. Auflage 2024

Copyright © 2024 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Schreiben Sie uns:

Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Für unseren Sonnenschein und Wirbelwind Sophie Jelena.

Inhaltsverzeichnis

Vorwort

IEinstieg

1Einführung

1.1Java im Überblick

1.2Los geht’s – Installation

1.2.1Java-Download

1.2.2Installation des JDKs

1.2.3Installationsnacharbeiten

1.2.4Java-Installation prüfen

1.3Entwicklungsumgebungen

1.3.1Installation von Eclipse

1.3.2Eclipse starten

1.3.3Erstes Projekt in Eclipse

1.3.4Erste Klasse in Eclipse

1.4Ausprobieren der Beispiele

2Schnelleinstieg

2.1Hallo Welt (Hello World)

2.2Variablen und Datentypen

2.2.1Definition von Variablen

2.2.2Bezeichner (Variablennamen)

2.3Operatoren im Überblick

2.3.1Arithmetische Operatoren

2.3.2Zuweisungsoperatoren

2.3.3Vergleichsoperatoren

2.3.4Logische Operatoren

2.4Fallunterscheidungen

2.5Methoden

2.5.1Methoden aus dem JDK nutzen

2.5.2Eigene Methoden definieren

2.5.3Nützliche Beispiele aus dem JDK

2.5.4Signatur einer Methode

2.6Fehlerbehandlung und Exceptions

2.7Kommentare

2.8Arrays als Built-in-Datentypen

2.9Schleifen

2.9.1Die for-Schleife

2.9.2Die for-each-Schleife

2.9.3Die while-Schleife

2.9.4Die do-while-Schleife

2.10Rekapitulation

2.11Dokumentation des JDKs

3Strings

3.1Schnelleinstieg

3.1.1Gebräuchliche Stringaktionen

3.1.2Suchen und Ersetzen

3.1.3Informationen extrahieren und formatieren

3.2Nächste Schritte

3.2.1Mehrzeilige Strings (Text Blocks)

3.2.2Strings und char[]

4Arrays

4.1Schnelleinstieg

4.1.1Gebräuchliche Aktionen

4.1.2Mehrdimensionale Arrays

4.2Nächste Schritte

4.2.1Eindimensionale Arrays

4.2.2Mehrdimensionale Arrays

5Klassen und Objektorientierung

5.1Schnelleinstieg

5.1.1Grundlagen zu Klassen und Objekten

5.1.2Eigenschaften (Attribute)

5.1.3Objektkonstruktion und Wertebelegung

5.1.4Verhalten (Methoden)

5.1.5Typprüfungen

5.1.6Basiswissen zur Klasse Object

5.1.7Objekte vergleichen – die Rolle von equals()

5.2Nächste Schritte

5.2.1Klassen ausführbar machen

5.2.2Imports und Packages

5.2.3Übergang zum Einsatz einer IDE

5.2.4Imports und Packages: Auswirkungen auf unsere Applikation

5.2.5Verstecken von Informationen

5.2.6Utility-Klassen

5.2.7Schnittstelle (Interface) und Implementierung

5.2.8Records

6Collections

6.1Schnelleinstieg

6.1.1Die Klasse ArrayList

6.1.2Die Klasse HashSet

6.1.3Iteratoren

6.1.4Die Klasse HashMap

6.2Nächste Schritte

6.2.1Generische Typen (Generics)

6.2.2Basisinterfaces für die Containerklassen

6.2.3Objekte sortieren

7Ergänzendes Wissen

7.1Sichtbarkeits- und Gültigkeitsbereiche

7.2Primitive Typen und Wrapper-Klassen

7.2.1Grundlagen

7.2.2Casting: Typkonvertierungen

7.2.3Konvertierung von Werten

7.3Ternary-Operator (?-Operator)

7.4Aufzählungen mit enum

7.5Fallunterscheidungen mit switch

7.6Moderne Switch Expressions

7.7Pattern Matching bei switch (Java 21)

7.7.1Einführendes Beispiel

7.7.2Spezialitäten

7.8break und continue in Schleifen

7.8.1Funktion von break und continue in Schleifen

7.8.2Wie macht man es besser?

7.9Rekursion

IIAufstieg

8Lambdas und Streams

8.1Einstieg in Lambdas

8.1.1Syntax von Lambdas

8.1.2Functional Interfaces und SAM-Typen

8.1.3Das Interface Predicate<T>

8.2Methodenreferenzen

8.3Streams im Überblick

8.3.1Streams erzeugen – Create Operations

8.3.2Intermediate und Terminal Operations im Überblick

8.3.3Zustandslose Intermediate Operations

8.3.4Zustandsbehaftete Intermediate Operations

8.3.5Terminal Operations

9Verarbeitung von Dateien

9.1Schnelleinstieg

9.1.1Das Interface Path und die Utility-Klasse Files

9.1.2Anlegen von Dateien und Verzeichnissen

9.1.3Verzeichnisinhalte

9.1.4Dateiaktionen und die Utility-Klasse Files

9.1.5Informationen zu Path-Objekten

9.1.6Kopieren und Umbenennen

9.1.7Löschen

10Fehlerbehandlung mit Exceptions

10.1Schnelleinstieg

10.1.1Fehlerbehandlung

10.1.2Exceptions selbst auslösen – throw

10.1.3Eigene Exception-Typen definieren

10.1.4Exceptions propagieren – throws

10.1.5Automatic Resource Management (ARM)

11Datumsverarbeitung

11.1Schnelleinstieg

11.1.1Die Aufzählungen DayOfWeek und Month

11.1.2Die Klasse LocalDate

11.1.3Die Klassen LocalTime und LocalDateTime

12Schlusswort

IIIAnhang

ASchlüsselwörter im Überblick

BSchnelleinstieg JShell

CGrundlagen zur JVM

C.1Wissenswertes zur JVM

C.1.1Einführendes Beispiel

C.1.2Ausführung eines Java-Programms

Literaturverzeichnis

Index

Vorwort

Zunächst einmal bedanke ich mich bei Ihnen, dass Sie sich für dieses Buch entschieden haben. Hierin finden Sie einen fundierten und interaktiven Einstieg in die Programmierung mit Java. Das Ganze startet bei den Grundlagen und basierend darauf wird Ihr Wissen immer weiter ausgebaut, sodass Sie nach der Lektüre bereit sind, eigene Experimente zu wagen, und bestenfalls Programmieren als neues Hobby lieben gelernt haben. Insbesondere die ungeheuren Möglichkeiten, kreativ zu werden und dabei immer wieder Neues zu entdecken, werden Sie bestimmt ähnlich faszinieren wie mich seit über 30 Jahren.

Zielgruppe

Dieses Buch richtet sich an Programmierneulinge und wendet sich somit insbesondere an

Schüler und Schülerinnen

, die ein paar Tipps und Hilfestellungen suchen, die das Nachvollziehen des Informatikunterrichts erleichtern,

Studierende

, die ergänzende Erklärungen zu denen aus den Vorlesungen suchen, um Gelerntes schneller anwenden zu können oder besser für die nächste Prüfung vorbereitet zu sein,

und

alle Interessierten

, die einfach die wunderbare und vielfältige Welt der Programmierung mit Java kennenlernen möchten.

Voraussetzungen

Zum Einstieg sind Programmiererfahrungen keine zwingende Voraussetzung – natürlich schaden diese nicht. Selbst dann nicht, wenn Sie sich vielleicht eher mit Python, C#, TypeScript oder JavaScript beschäftigt haben. Für die Lektüre des Buchs ist es aber hilfreich, wenn Sie

einigermaßen fit im Installieren von Programmen sind und

wissen, was die Kommandozeile ist und sie grundlegend bedienen können.

Was vermittelt dieses Buch?

Sie als Leser erhalten in diesem Buch einen Einstieg in Java. Allerdings ist die trockene Theorie auf ein Minimum reduziert und wir legen immer mit kleinen Beispielen los. Deshalb ist es ein Buch zum Mitmachen. Ich ermutige Sie, parallel zum Lesen auch immer ein paar Dinge auszuprobieren, vielleicht sogar mal das eine oder andere abzuwandeln. Man lernt Programmieren einfach am besten, wenn man es praktiziert. Somit bietet es sich an, die abgebildeten Codeschnipsel abzutippen. Das kann in der Konsolenapplikation JShell erfolgen oder im Editor Ihrer Entwicklungsumgebung/IDE (Integrated Development Environment). Beide Varianten werden im Verlauf des Buchs genauer beschrieben.

Damit Sie nicht über einfache Probleme stolpern, führt das Buch jeweils behutsam und schrittweise in die jeweilige Thematik ein und gibt Ihnen immer auch ein paar Hinweise, auf was man achten oder was man vielleicht sogar vermeiden sollte. Dazu dienen diverse Hinweise mit Hintergrundinformationen.

Hinweis: Hintergrundinformation

In derart formatierten Kästen finden sich im späteren Verlauf des Buchs immer wieder einige wissenswerte Tipps und ergänzende Hinweise zum eigentlichen Text.

Aufbau dieses Buchs

Dieses Buch besteht aus jeweils in sich abgeschlossenen, aber aufeinander aufbauenden Kapiteln zu elementar wichtigen Bereichen der Programmiersprache Java. Für Ihren erfolgreichen Weg zur Java-Programmierung gliedert sich das Buch in die beiden Teile Einstieg und Aufstieg.

Im Teil »Einstieg« werden Grundlagen behandelt. Hier empfiehlt es sich, die Kapitel in der Reihenfolge des Buchs zu lesen, da mit jedem Kapitel neue Wissensbausteine und Themen hinzukommen, die im Anschluss vorausgesetzt und verwendet werden.

Dann folgt der Teil »Aufstieg«. Dort beschäftigen wir uns mit leicht fortgeschrittenen Themen. Hier können Sie zwar nach Lust und Laune eins der Kapitel zur Lektüre auswählen, aber auch hier bauen einige Themen aufeinander auf.

Einstieg

Kapitel 1 – EinführungDieses Kapitel gibt einen Überblick über Javas mittlerweile über 25-jährige Geschichte. Zudem wird die Installationen von Java an sich und einer Entwicklungsumgebung/IDE sowie das Ausprobieren der Beispiele beschrieben.

Kapitel 2 – SchnelleinstiegDieses Kapitel bietet einen Schnelleinstieg und stellt viele wesentliche Elemente von Java vor. Dabei wird behutsam Fahrt aufgenommen: Wir beginnen mit einer Ausgabe eines Textes, traditionell »Hello World«, und lernen dann, wie wir das mithilfe von Variablen variieren. Zudem schauen wir uns bedingte Ausführungen mit Fallunterscheidungen sowie Wiederholungen mit Schleifen an.

Kapitel 3 – StringsVariablen vom Typ String repräsentieren Zeichenketten und dienen zur Verwaltung von textuellen Informationen. Diese sind aus kaum einem Programm wegzudenken und werden in diesem Kapitel genauer behandelt.

Kapitel 4 – ArraysEbenso wie Strings sind auch Arrays recht gebräuchliche Datenstrukturen und helfen dabei, mehrere gleichartige Dinge zu speichern, etwa eine Menge von Zahlen, Namen, Personen usw. Insbesondere bilden Arrays die Grundlage für viele andere Datenstrukturen. In diesem Kapitel lernen wir Arrays im Detail kennen.

Kapitel 5 – Klassen und ObjektorientierungImmer wieder hört man, Java ist eine objektorientierte Sprache. Doch was bedeutet das? Zum Verständnis gibt dieses Kapitel einen Einblick in den objektorientierten Entwurf von Software. Dazu vermittle ich die grundlegenden Ideen von Zustand (Daten) in Kombination mit Verhalten (Funktionen auf diesen Daten) und wie man dies in Java formuliert.

Kapitel 6 – CollectionsWährend Arrays ziemlich elementar sind, bieten die in Java integrierten Collections oder Containerklassen mehr Flexibilität und Komfort bei der Verwaltung von Daten. Insbesondere unterstützen die vordefinierten Listen, Mengen und Schlüssel-Wert-Abbildungen bei der Verwaltung anderer Objekte.

Kapitel 7 – Ergänzendes WissenIn diesem Kapitel werden Themen angesprochen, die zuvor aus didaktischen Gründen bewusst ausgelassen wurden, weil das Ganze sonst zu tief in die Details gegangen wäre und zu viel anderes Wissen vorausgesetzt hätte. Hier angelangt lohnt es sich, Ihre Java-Kenntnisse zu primitiven Typen, dem Ternary-Operator, Fallunterscheidungen mit switch usw. zu komplettieren.

Aufstieg

Kapitel 8 – Lambdas und StreamsDieses Kapitel stellt sowohl Lambda-Ausdrücke (kurz Lambdas) als auch das damit eng verbundene Stream-API vor. Beides sind essenzielle Bausteine von modernem Java und ermöglichen es, Lösungen oftmals elegant zu formulieren.

Kapitel 9 – Verarbeitung von DateienDieses Kapitel beschäftigt sich mit der Verarbeitung von Informationen aus Dateien. Dies ist für viele Anwendungen von großer Bedeutung, da Informationen oftmals nicht nur während der Programmlaufzeit von Interesse sind, sondern vor allem auch darüber hinaus – denken Sie etwa an die Highscore-Liste Ihres Lieblingsspiels.

Kapitel 10 – Fehlerbehandlung mit ExceptionsVielleicht kennen Sie es schon: Manchmal tritt ein Programmfehler auf und das Programm stürzt ab. Wichtige Daten gehen potenziell verloren. So etwas ist ärgerlich. Daher gehört auch die Behandlung von Fehlern zum guten Ton beim Programmieren. Dieses Kapitel führt in die Thematik ein.

Kapitel 11 – DatumsverarbeitungWährend früher die Datumsverarbeitung eher stiefmütterlich in Java unterstützt wurde, bietet modernes Java eine Vielzahl praktischer Funktionalitäten zur Datumsverarbeitung, die in diesem Kapitel einführend dargestellt werden.

Kapitel 12 – SchlusswortHier rekapitulieren wir kurz, was Sie durch die Lektüre dieses Buchs gelernt haben sollten und wie Sie möglicherweise weitermachen können.

Anhang

Anhang A – Schlüsselwörter im ÜberblickIn Java existiert eine Reihe von Schlüsselwörtern, die reserviert sind und nicht als Bezeichner für Variablen, Methoden, Klassen oder anderes verwendet werden dürfen. Hier erhalten Sie einen Überblick.

Anhang B – Schnelleinstieg JShellIn diesem Buch werden diverse Beispiele direkt auf der Konsole ausprobiert. Dabei hilft die interaktive Kommandozeilenapplikation JShell als REPL (Read-Eval-Print-Loop).

Anhang C – Grundlagen zur JVMIn diesem Anhang vermittle ich Grundwissen zur JVM (Java Virtual Machine).

Sourcecode und ausführbare Programme

Beim Erlernen des Programmierens ist es hilfreich, Beispiele selbst auszuprobieren und abzutippen. Um Ihnen ein wenig Tipparbeit und Mühe zu ersparen, finden Sie viele der Beispiele als Programme in einem Eclipse-Projekt. Dieses steht unter https://oreilly.de/produkt/java-lernen-kurz-gut/ zur Verfügung. Weitere Informationen zum genauen Vorgehen finden Sie auf der Download-Seite.

Verwendete Java-Version(en)

Viele Beispiele wurden auf Basis von Java 17 entwickelt und ausprobiert. Mittlerweile ist bereits Java 21 erschienen. Hilfreiche Features dieser Version setze ich passend ein. Für dieses Buch sind die brandaktuellen Java-Features zwar von Interesse, aber nicht von entscheidender Bedeutung, da es ja um die Grundlagen der Sprache geht.

Nach der Lektüre dieses Buchs sind Sie bestens gerüstet für modernes Java und können nach Lust und Laune eigene Experimente und Hobbyprojekte starten.

Konventionen

Verwendete Zeichensätze

Neben der vorliegenden Schriftart sind wichtige Textpassagen kursiv oder kursiv und fett markiert. Englische Fachbegriffe werden eingedeutscht großgeschrieben, etwa Event Handling. Zusammensetzungen aus englischen und deutschen (oder eingedeutschten) Begriffen werden mit Bindestrich verbunden, z. B. Plugin-Manager. Listings mit Sourcecode sind in der Schrift Courier gesetzt, um zu verdeutlichen, dass diese einen Ausschnitt aus einem Java-Programm darstellen. Auch im normalen Text wird für Klassen, Methoden, Konstanten und Parameter diese Schriftart genutzt.

Schreibweise von Methodenaufrufen

Im Text beschriebene Methodenaufrufe enthalten in der Regel die Typen der Übergabeparameter, etwa substring(int, int). Sind die Parameter in einem Kontext nicht entscheidend, wird mitunter auf deren Angabe aus Gründen der besseren Lesbarkeit verzichtet.

Verwendete Abkürzungen

Im Buch verwende ich die in der nachfolgenden Tabelle aufgelisteten Abkürzungen. Weitere Abkürzungen werden im laufenden Text in Klammern nach ihrer ersten Definition aufgeführt und anschließend bei Bedarf genutzt.

Abkürzung

Bedeutung

API

Application Programming Interface

ASCII

American Standard Code for Information Interchange

IDE

Integrated Development Environment

JDK

Java Development Kit

JEP

JDK Enhancement Proposal

JLS

Java Language Specification

JRE

Java Runtime Environment

JVM

Java Virtual Machine

Gerne möchte ich noch den Begriff API (Application Programming Interface) kurz erklären: Dabei handelt es sich um die von einem Programm bereitgestellten Funktionalitäten in Form von Methoden.

Danksagung

Dieses Buch basiert auf meinem Buch »Einfach Java« [3], das in weiten Teilen leicht überarbeitet wurde und somit ein Facelift erfahren hat. Dazu wurden diverse Passagen und Beispiele ergänzt und derart modifiziert, dass sie noch besser verständlich sind. Auch potenziell missverständliche Formulierungen wurden korrigiert und sogar kleinere Teile entfernt, um dem Text mehr Stringenz zu verleihen und sich in die Kurz-und-gut-Serie einzupassen. Aufgrund der Basis »Einfach Java« möchte ich hier nochmals folgenden Leuten danken: Michael Kulla für das Aufdecken von Tippfehlern bis hin zu diversen inhaltlichen Hinweisen, Prof. Dr. Dominik Gruntz für eine Vielzahl an hilfreichen Anmerkungen, Jean-Claude Brantschen und Christian Heitzmann für ihre Kommentare und Tipps und schließlich Maria Herdt für einen kritischen Blick auf einige Kapitel.

Zudem geht ein Dankeschön an das Team des dpunkt.verlags (Dr. Michael Barabas, Dr. Benjamin Ziech, Julia Griebel und Stefanie Weidner) für die tolle Zusammenarbeit. Außerdem möchte ich mich bei Torsten Horn für die fundierte fachliche Durchsicht sowie bei Ursula Zimpfer für ihre Adleraugen beim Copy-Editing bedanken.

Abschließend geht ein lieber Dank an meine Frau Lilija für ihr Verständnis und die Unterstützung. Ihren ganz besonderen Anteil hat unser kleiner Sonnenschein Sophie Jelena dazu beigetragen, indem sie den Papa immer wieder zum Lachen gebracht hat.

Anregungen und Kritik

Trotz großer Sorgfalt und mehrfachen Korrekturlesens lassen sich missverständliche Formulierungen oder teilweise sogar Fehler leider nicht vollständig ausschließen. Falls Ihnen etwas Derartiges auffallen sollte, so zögern Sie bitte nicht, mir dies mitzuteilen. Gerne nehme ich auch Anregungen oder Verbesserungsvorschläge entgegen. Kontaktieren Sie mich bitte per Mail unter:

Zürich, im Oktober 2023

Michael Inden

IEinstieg

1Einführung

1.1Java im Überblick

Die Programmierspache Java wurde Mitte der 1990er-Jahre von der Firma Sun entwickelt und später von Oracle übernommen. Mittlerweile hat Java zwar mehr als 25 Jahre auf dem Buckel, wird aber nicht altersschwach, sondern kontinuierlich gepflegt und besitzt ein extrem breitgefächertes und professionelles Angebot an externen Bibliotheken und Entwicklungstools. Insbesondere gibt es mit Eclipse, IntelliJ IDEA und NetBeans sowie Visual Studio Code mehrere hervorragende sogenannte IDEs (Integrated Development Environments) zum komfortablen Programmieren.

Java eignet sich zur Entwicklung unterschiedlichster Applikationen, etwa für Businessapplikationen, Webapplikationen und sogar (einfachere) Datenbanken. Es wird aber auch im Bereich Mobile in Form von Android-Apps oder gar im Bereich von Spielen, z. B. Minecraft, verwendet. Java ist also eine vielseitige Programmiersprache mit breitem Einsatzspektrum. Ein guter Grund, sich damit ein wenig zu beschäftigen.

Außerdem ist Programmieren ein wunderbares Hobby sowie ein faszinierender Beruf und es macht zudem noch jede Menge Spaß, fördert die Kreativität und den Gestaltungswillen.

Darüber hinaus ist Java laut TIOBE-Index1 seit Jahren eine der populärsten Programmiersprachen. Eine wichtige Rolle spielte vermutlich lange die freie Verfügbarkeit, was zwischenzeitlich für die Originalvariante von Oracle nur noch für private, aber nicht für kommerzielle Zwecke galt. Mit Java 17 wurde das Releasemodell im September 2021 wieder auf eine freie Verfügbarkeit zurück geändert. Praktischerweise existieren einige frei verwendbare Alternativen wie etwa das AdoptOpenJDK – das mittlerweile als Eclipse Adoptium weitergeführt wird: https://projects.eclipse.org/projects/adoptium. Zudem ist Java recht einfach zu erlernen (schwieriger als Python, aber deutlich leichter als C++) und bietet eine große Vielfalt an Tools, Bibliotheken und Literatur sowie Hilfestellungen wie Stack-Overflow im Internet. Weiterhin zeichnet sich Java durch seine gute Performance aus. Das Ganze ist die Folge von jahrelangen Optimierungen und Verbesserungen. Dadurch ist die Ausführung von Java beispielsweise nur geringfügig langsamer als die von C++, aber um Längen schneller als die Ausführung von Python. Schließlich ermöglicht Java je nach Einsatzzweck entweder einen imperativen Stil oder die objektorientierte sowie die funktionale Programmierung, sodass man geeignet wählen kann.

Wie Sie sehen, sprechen viele gute Gründe für einen Einstieg in die Programmierung mit Java. Das Wichtigste ist jedoch der Spaß am Programmieren, Tüfteln und Ausprobieren. Lassen Sie uns starten!

Bestandteile von Java-Programmen

Java als Programmiersprache besitzt wie eine natürliche Sprache auch eine Grammatik und feststehende Begriffe/Wörter. Man spricht dabei von Syntax und Schlüsselwörtern (vgl. Anhang A).

Java-Programme werden textuell verfasst. Das wird Source-code genannt. Schauen wir uns zum Einstieg ein einfaches Java-Programm an:

public class MyFirstJavaProgram

{

public static void main(String[] args)

{

System.out.println("Hello World");

}

}

Keine Sorge, Sie müssen das Ganze noch nicht vollständig verstehen, wir werden das alles Stück für Stück erlernen. Hier ist zunächst nur wichtig, dass Sie elementare Bestandteile von Java-Programmen grob einordnen können. Dazu gehören die Schlüsselwörter, also Java-Befehle oder -Anweisungen, hier etwa public, class, static und void. Wie die Begriffe in einer Sprache tragen diese reservierten Wörter eine besondere Bedeutung, ganz analog etwa zu Auto, Haus, Tür usw. im Deutschen.

Ebenso wie im Deutschen können (oder besser sollten) die Begriffe nicht einfach wahllos miteinander verknüpft werden, um einen gültigen Satz zu formulieren. Das wird durch die Grammatik geregelt. Auch in Java existiert eine solche. Damit wird etwa festgelegt, dass es static void, aber nicht void static heißen muss. Man spricht hier auch von Syntax.

Zudem sehen wir geschweifte Klammern. Diese kann man sich wie Absätze in einem Text vorstellen. In Java bündeln diese Klammern Anweisungen. Man spricht dann auch von Blöcken und Sichtbarkeitsbereichen.

Genug der Vielzahl an Informationen. Nachfolgend werden wir die Dinge schön gründlich und detailliert besprechen und didaktisch immer ein neues Themengebiet ergründen, bis wir schließlich einen guten Einstieg in die Java-Programmierung vollzogen haben werden.

Vorab sollten wir erst einmal Java und Eclipse installieren, um erste Schritte machen zu können und für unsere weitere Entdeckungsreise bereit zu sein.

1.2Los geht’s – Installation

Im ersten Teil dieses Buchs wird ein Hands-on-Ansatz verfolgt, bei dem wir Dinge in Form kleinerer Java-Codeschnipsel direkt ausprobieren. Sie benötigen hierfür keine tiefgreifenden Programmiererfahrungen.

Damit Sie die nachfolgend beschriebenen Java-Programme ausführen können, benötigen Sie ein sogenanntes JDK (Java Development Kit). Dort finden sich alle für den Moment benötigten Tools. Beginnen wir also mit der Installation von Java.

1.2.1Java-Download

Java ist frei auf der folgenden Oracle-Webseite verfügbar: https://www.oracle.com/java/technologies/downloads/

Abb. 1–1: Java-Download-Seite

Im unteren Bereich finden Sie verschiedene Links für unterschiedliche Betriebssysteme. Wählen Sie den für Sie passenden Link und laden die entsprechende Installationsdatei herunter.

1.2.2Installation des JDKs

Zum Start der Installation doppelklicken Sie unter macOS auf die .dmg-Datei und folgen den Aufforderungen. Möglicherweise müssen Sie das Administrator-Passwort eingeben, um fortzufahren. Nach Abschluss der Installation können Sie die .dmg-Datei löschen, um Speicherplatz zu sparen.

Für Windows doppelklicken Sie bitte auf die .exe-Datei. Auch diese kann nach erfolgreicher Installation gelöscht werden. Führen Sie das heruntergeladene Installationsprogramm aus (z. B. jdk-21_windows-x64_bin.exe). Damit wird Java standardmäßig in das Verzeichnis C:\Program Files\Java \jdk-21 installiert, wobei der Verzeichnisname von der gewählten Version abhängt. Akzeptieren Sie die Standardeinstellungen und befolgen Sie die Anweisungen während der Installation.

1.2.3Installationsnacharbeiten

Damit Java bei Ihnen nach dem Download und der Installation in der Konsole korrekt funktioniert, sind ein paar Nacharbeiten nötig. Dazu sollten wir es zur leichteren Handhabung in den Pfad aufnehmen. Dies wird im Anschluss für die Betriebssysteme Windows und macOS beschrieben. Falls Sie ein Unix-Derivat nutzen, dann finden Sie ausführlichere Informationen auf dieser Seite: https://www.java.com/de/download/help/download_options.html. Für Windows und Mac gibt es dort auch noch einige ergänzende Informationen.

Nacharbeiten für Windows

Das Installationsverzeichnis sollte in die Umgebungsvariable PATH aufgenommen werden. Diese können Sie unter »Umgebungsvariablen« ändern. Drücken Sie die Win-Taste und geben Sie dann »umgeb« ein, bis »Systemumgebungsvariablen bearbeiten« erscheint. Mit Enter öffnet sich der Dialog »Systemvariablen«. Klicken Sie auf den Button »Bearbeiten« zum Öffnen eines Bearbeitungsdialogs. Fügen Sie in der Liste das Installationsverzeichnis gefolgt von bin, etwa C:\Program Files\Java\jdk-21\bin, hinzu. Legen Sie eine Umgebungsvariable namens JAVA_HOME an, die auf das Installationsverzeichnis verweist:

Abb. 1–2: Umgebungsvariablen bearbeiten

Ergänzen Sie die Variable PATH wie nachfolgend gezeigt um den Eintrag %JAVA_HOME%\bin. Außerdem sollte der Eintrag möglichst ganz oben stehen:

Abb. 1–3: Umgebungsvariablen ordnen

Beachten Sie bitte noch Folgendes: Bestätigen Sie die gesamten Dialoge immer mit OK, sodass die Variablen gesetzt sind. Eventuell geöffnete Eingabeaufforderungen müssen geschlossen und neu geöffnet werden, um die geänderten Variablen wirksam werden zu lassen.

Nacharbeiten für macOS

Auch unter macOS empfiehlt es sich, einen Verweis auf Java im Pfad in der jeweiligen Shell (dem Terminal) passend zu setzen bzw. in das Startskript Ihrer Shell einzutragen, etwa ~/.bash_profile oder neuer ~/.zshrc:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/

Contents/Home

export PATH=$JAVA_HOME/bin:$PATH

1.2.4Java-Installation prüfen

Nach dem Ausführen der obigen Schritte sollte Java auf Ihrem Rechner installiert und von der Konsole startbar sein und Sie damit bereit für die nächsten Schritte.

Öffnen Sie eine Konsole und geben Sie das Kommando java --version ein – im folgenden Text nutze ich immer $ zur Kennzeichnung von Eingaben auf der Konsole, also dem Terminal bei macOS bzw. der Windows-Eingabeaufforderung. Wenn die Ausgabe ähnlich zu dieser erfolgt, dann haben Sie Java erfolgreich installiert.

$ java --version

java 21 2023-09-19 LTS

Java(TM) SE Runtime Environment (build 21+35-LTS-2513)

Java HotSpot(TM) 64-Bit Server VM (build 21+35-LTS-2513, mixed mode, sharing)

JShell prüfen

Prüfen Sie der Vollständigkeit halber bitte auch noch den Aufruf sowie das Beenden des Tools JShell, das wir für den ersten Teil des Buchs intensiv nutzen werden:

$ jshell

| Willkommen bei JShell - Version 21

| Geben Sie für eine Einführung Folgendes ein: /help intro

jshell> /exit

| Auf Wiedersehen

Wenn die Programme bzw. Tools starten und Sie ähnliche Meldungen erhalten (möglicherweise mit kleinen Abweichungen bei den Versionsangaben), so können wir uns auf die Entdeckungsreise zur Java-Programmierung machen.

1.3Entwicklungsumgebungen

Wenn Sie nach den ersten Gehversuchen mit Java damit beginnen, auch umfangreichere Java-Programme zu schreiben (also viel Sourcecode zu bearbeiten), dann empfiehlt sich der Einsatz einer IDE anstelle von Texteditoren oder anstatt rein auf der Konsole in der JShell zu arbeiten. Für kleine Experimente und zum Einstieg ist aber gerade die JShell ein wunderbares Hilfsmittel (zumindest in modernen Java-Versionen).

Zwar kann man für Änderungen an Java-Programmen einen Texteditor nutzen, aber dieser bietet nicht die Annehmlichkeiten einer IDE: In IDEs laufen viele Dinge und Analysen automatisch und im Hintergrund ab, wodurch gewisse Softwaredefekte direkt noch während des Modifizierens von Sourcecode (auch Editieren genannt) erkannt und angezeigt werden, etwa in einer To-do-/Task-Liste. IDEs bereiten zudem vielfältige Informationen auf. Weiterhin werden Annehmlichkeiten wie Quick Fixes zur Korrektur kleinerer Probleme sowie automatische Transformationen und Änderungen von Sourcecode, sogenannte Refactorings, unterstützt.

Für Java existieren verschiedene IDEs. Sowohl Eclipse als auch NetBeans sind kostenlos. In den letzten Jahren wird auch das frei verfügbare Visual Studio Code von Microsoft immer populärer. Schließlich gibt es IntelliJ IDEA als kostenlose Community Edition sowie als kostenpflichtige Ultimate Edition. Alle IDEs haben ihre speziellen Vorzüge, aber auch (kleinere) Schwächen.

Für dieses Buch werden wir Eclipse nutzen. Wenn Sie bereits etwas Erfahrung haben, dann sind Sie natürlich frei, sich die anderen IDEs anzuschauen und auszuprobieren. Vieles geht über persönliche Präferenzen. Entscheiden Sie also später selbst und besuchen Sie dazu folgende Internetadressen:

https://www.eclipse.org/

https://www.jetbrains.com/idea/

https://netbeans.apache.org/

https://code.visualstudio.com/

1.3.1Installation von Eclipse

Öffnen Sie in Ihrem Browser die Seite www.eclipse.org. Diese präsentiert sich ähnlich zu Abbildung 1–4. Dort finden Sie oben rechts einen Download-Button, den Sie bitte drücken.

Abb. 1–4: Eclipse-Hauptseite zum Download

Dadurch wird die Download-Seite geöffnet, wie es Abbildung 1–5 zeigt. Dort sehen Sie verschiedene Möglichkeiten, bitte klicken Sie auf »Download Packages«.

Abb. 1–5: Eclipse-Installation »Download Packages«

Nun sollte sich die Seite mit den verfügbaren Packages öffnen. Diese sieht ähnlich zu Abbildung 1-6 aus. Dort wählen Sie abhängig von Ihrem Betriebssystem die passende Version und klicken diese zum Download an.

Abb. 1–6: Betriebssystemspezifische Eclipse-Versionen

Nachdem der Download abgeschlossen ist, entpacken oder starten Sie bitte das heruntergeladene ZIP, DMG oder die Datei im jeweiligen Linux-Format. Im Fall von Windows müssen Sie das entpackte Archiv noch in Ihren Programme-Ordner kopieren.

Auf der gezeigten Webseite wird der Eclipse Installer in einem Kasten angepriesen. Dieser ist sicher eine gute Alternative.

1.3.2Eclipse starten

Nach den beschriebenen Installationsschritten sollte Ihnen nun Eclipse als Programm im Start-Menü bzw. der Programmauswahl zur Verfügung stehen. Starten Sie es bitte, etwa durch einen Doppelklick auf das Programm-Icon.

Bei macOS erhalten Sie gegebenenfalls einen Warnhinweis, dass es sich um ein aus dem Internet heruntergeladenes Programm handelt. Dies können Sie ignorieren und durch einen Klick auf Öffnen fortfahren.

Abb. 1–7: Warnmeldung (macOS)

Als Nächstes wird ein Dialog angezeigt, um das Hauptverzeichnis für Ihre Projekte festzulegen. Sie können hier den Standard akzeptieren und ein Klick auf »Launch« startet dann Eclipse.

Abb. 1–8: Hauptverzeichnis festlegen (exemplarisch für den Rechner des Autors)

Nun öffnet sich der Startbildschirm von Eclipse, der sich je nach Version leicht unterschiedlich präsentiert.

Möglicherweise erscheint folgendes Bild, wobei Sie mit einem Klick auf »Hide« dann auf dem Hauptbildschirm landen.

Abb. 1–9: Startbildschirm von Eclipse

Begrifflichkeiten

Ein Projekt bündelt verschiedene Dateien, insbesondere solche mit Java-Kommandos, aber auch Texte oder Bilder usw. Java-Dateien, also solche Dateien, die Java-Kommandos enthalten beispielsweise Variablendefinitionen, Methoden und weitere Anweisungen, enden im Dateisystem standardmäßig mit .java und definieren eine zum Dateinamen gleichnamige Klasse ohne die Endung .java.

Keine Sorge, Sie müssen noch nicht alles im Detail verstehen. Es baut sich aber ein erstes Verständnis auf, das sich dann weiter vertieft, wenn Sie die nachfolgend beschriebenen Schritte häufiger ausführen.

Der Hauptbildschirm präsentiert Ihnen verschiedene Möglichkeiten, um neue Projekte anzulegen oder bestehende zu importieren.

Abb. 1–10: Hauptbildschirm von Eclipse

Das Importieren wird separat in der Beschreibung zum Download der Sourcen zu diesem Buch thematisiert. Wir schauen uns nachfolgend das Anlegen eines Projekts mitsamt einer einfachen Klasse sowie deren Start an.

1.3.3Erstes Projekt in Eclipse

Nun wollen wir uns dem Anlegen eines Projekts und einer ersten Klasse widmen, um die Abläufe exemplarisch einmal durchgespielt zu haben, die für spätere Aktionen notwendig sind. Generell können Sie viele der hier gezeigten Aktionen auch zum Nachvollziehen der für die JShell gezeigten Programmschnipsel nutzen – dann als Teil einer Klasse und deren main()-Methode.

Beginnen wir mit dem Anlegen eines Java-Projekts. Dazu dient ein Wizard, also eine geführte Abfolge von Dialogen. Zunächst wählen wir »Java Project« und klicken dann auf »Next«.

Abb. 1–11: Anlegen eines neuen Java-Projekts

Damit landen wir auf der nächsten Seite zum Anlegen eines Java-Projekts mitsamt der Eingabe des Namens sowie der Auswahl der passenden Java-Version – beides durch Pfeile gekennzeichnet.

Abb. 1–12: Dialog »New Java Project«

Es erscheint abschließend die Frage, ob die Java-Perspektive geöffnet werden soll. Das ist praktisch, um gleich die nächsten Schritte ausführen zu können.

Abb. 1–13: Frage nach Öffnen der Java-Perspektive

1.3.4Erste Klasse in Eclipse

Unser erstes Java-Projekt ist jetzt angelegt und ist bereit, um mit Klassen in Form von Java-Dateien mit Leben gefüllt zu werden. Ausgangspunkt zum Anlegen einer Klasse ist die Baumdarstellung auf der rechten Seite im Package Explorer. Dort öffnen wir ein Kontextmenü und wählen den Eintrag New > Class.

Abb. 1–14: Kontextmenü zum Anlegen einer Klasse

Durch Auswahl im Kontextmenü öffnet sich folgender Dialog zum Erzeugen einer Klasse.

Abb. 1–15: Dialog »New Java Class«

Im Dialog muss man das gewünschte Package sowie den Klassennamen eingeben. Bei Bedarf kann man das Erzeugen einer main()-Methode per Checkbox aktivieren. Ein Klick auf »Finish« erzeugt schließlich eine neue Klasse.

Nachdem das Grundgerüst steht, können Sie den Sourcecode aus den Beispielen im Editor einfügen bzw. abtippen.

Abb. 1–16: Sourcecode editieren

Sicherlich wollen Sie das so entstandene Java-Programm in Aktion erleben. Dazu benötigt es bekanntermaßen eine main()-Methode. Mithilfe des Kontextmenüs oder des grünen Knopfs mit weißem Play-Pfeil kann man dann die Ausführung starten.

Abb. 1–17: Programm ausführen

1.4Ausprobieren der Beispiele

Vielfach können Sie die abgebildeten Sourcecode-Schnipsel einfach in der JShell oder mithilfe eines Texteditors bzw. besser noch einer IDE eingeben. Je nach Situation empfiehlt sich die eine oder andere Art mehr. Damit diese Formen leichter und direkt von Ihnen erkannt werden können, markiere ich die Eingaben in die JShell besonders.

JShell

Zum schnellen Ausprobieren können Sie die Java-Anweisungen einfach in der JShell eintippen. Das ist normalerweise dadurch angedeutet, dass die einzugebenden Zeilen folgendermaßen mit jshell> markiert sind:

jshell> System.out.println("Hello JShell")

jshell> int multiply(int a, int b) {

...> return a * b;

...> }

| created method multiply(int,int)

Auch spezielle Java-Funktionalitäten lassen sich einbinden:

jshell> import java.time.Duration

jshell> import java.time.temporal.ChronoUnit

jshell> Duration.of(20L, ChronoUnit.DAYS).isNegative()

$11 ==> false

jshell> Duration.of(-20L, ChronoUnit.DAYS).isNegative()

$12 ==> true

Dieses Vorgehen praktiziere ich bis maximal ca. 10 bis 20 Zeilen. Danach empfiehlt es sich, die Zeilen mithilfe eines Texteditors einzugeben oder besser mithilfe einer IDE.

HinweisManchmal möchte ich konzeptionell etwas verdeutlichen und verzichte dann auf die zuvor gezeigte exakte Darstellung in der JShell, weil die Anweisungen durch den Mix von Protokollierung mit jshell> und den Zwischenergebnissen unübersichtlich würden. Daher greife ich auf eine verkürzte Darstellung zurück:

Derartige Anweisungen sollten dann in die JShell eingegeben oder aber in eine main()-Methode eingebettet werden.

Texteditor + Direct Compilation

Werden die Programme länger, so wird das Editieren mit der JShell mühsam. Hier kann ein Texteditor Abhilfe schaffen. Programme sind dann ohne jshell> in etwa wie folgt abgebildet:

import java.time.Duration;

import java.time.temporal.ChronoUnit;

public class DurationIntroExample

{

public static void main(String[] args)

{

System.out.println(Duration.of(20L, ChronoUnit.DAYS).isNegative());

System.out.println(Duration.of(-12L, ChronoUnit.DAYS).isNegative());

}

}

Diese Zeilen müssen dann exakt so abgetippt und als Java-Datei mit dem exakt gleichen Namen wie die Klasse inklusive der Endung .java, also hier als DurationIntroExample.java, abgespeichert werden.

Ausführung mit Direct CompilationDamit Sie die Anweisungen ausführen können, verwenden wir eine Direct Compilation genannte Funktionalität, die es erlaubt, einzelne Java-Dateien durch Aufruf von java starten zu können (sofern sich dort keine Fehler eingeschlichen haben, die Ihnen Java aber ansonsten brühwarm auf der Konsole mitteilt).

Betrachten wir das exemplarisch für das obige einfache, aus einer Klasse bestehende Beispielprogramm:

$ java DurationIntroExample.java

Dann erhalten wir diese Ausgabe:

false

true

IDE

Wie bereits angedeutet, ist eine IDE die empfehlenswerte Variante, den Sourcecode zu pflegen, insbesondere, wenn dieser umfangreicher wird. Vor allem das Markieren von Syntaxfehlern hilft enorm, möglichst schnell Erfolge zu erzielen. Zudem funktioniert ein Texteditor mit Direct Compilation nur für einzelne Java-Dateien, aber nicht mehr für Programme, die auf mehrere Dateien aufgeteilt sind.

Wenn Sie mit einer IDE arbeiten, dann können Sie wie im vorherigen Unterkapitel beschrieben ein Projekt sowie einzelne Java-Dateien inklusive main()-Methode anlegen lassen. Programme, die ohne jshell> in etwa wie folgt abgebildet sind, sollten Sie bevorzugt in einer IDE eingeben (und nur selten auf die zuvor gezeigte Variante mit Texteditor zurückgreifen):

import java.time.Duration;

import java.time.temporal.ChronoUnit;

public class DurationIntroExample

{

public static void main(String[] args)

{

System.out.println(Duration.of(20L, ChronoUnit.DAYS).isNegative());

System.out.println(Duration.of(-12L, ChronoUnit.DAYS).isNegative());

}

}

2Schnelleinstieg

2.1Hallo Welt (Hello World)

Wir beginnen den Einstieg in Java mit einem simplen Programm, nämlich wie traditionell in den allermeisten Büchern zum Programmierenlernen mit HelloWorld, der Ausgabe eines Grußes auf der Konsole. Das haben wir schon in etwas komplizierterer Form in der Einleitung gesehen. Wir wollen es weiter vereinfachen und damit unsere Entdeckungsreise starten.

Java bietet mit der JShell einen interaktiven Kommandozeileninterpreter, auch Read-Eval-Print-Loop (REPL) genannt. Das erleichtert das schrittweise Erlernen von Java, weil wir nicht gleich zu Beginn eine Vielzahl an Konzepten verstehen oder zumindest hinnehmen müssen. Als weiterer Vorteil wird uns eine Menge Tipparbeit erspart.

Die interaktive JShell erlaubt es uns, kleinere Java-Code-schnipsel auszuprobieren. Der Start erfolgt mit dem Kommando jshell:

$ jshell

| Willkommen bei JShell – Version 21

| Geben Sie für eine Einführung Folgendes ein: /help intro

jshell>

Neben dem Hinweis auf die Version zeigt der Prompt jshell> an, dass wir nun Java-Befehle eingeben können. Probieren wir es gleich einmal aus:

jshell> System.out.println("Hello World from JShell!")

Hello World from JShell!

Herzlichen Glückwunsch zur ersten Ausgabe mit Java!

Wir verwenden dabei die später in Kapitel 5 vorgestellten Klassen und Methoden. Hier wird über System.out eine Ausprägung der Klasse java.io.PrintStream referenziert. Diese ermöglicht Ausgaben auf der Konsole. Funktionalität wird durch sogenannte Methoden, eine Folge von Befehlen, bereitgestellt, in diesem Fall durch die Methode mit dem Namen println(), der man in runden Klammern einen Text eingerahmt von doppelten Anführungszeichen übergibt. Aber keine Sorge, Sie müssen noch nicht alle Details verstehen – wir werden diese im Verlaufe dieses Buchs ausführlich besprechen. Jetzt geht es zunächst um die ersten Schritte und ein initiales Gespür. Laden Sie die Begleitsourcen herunter oder tippen Sie die einfachen Beispiele ab, und wenn Sie sich sicher fühlen, dann variieren Sie auch gerne ein wenig.

Wir haben bereits einen netten Gruß auf der Konsole ausgeben können. Das war schon ein guter Anfang. Allerdings wäre es etwas eintönig, nur Texte ohne Variation auszugeben. Um den Gruß anzupassen, lernen wir nun Variablen kennen.

2.2Variablen und Datentypen

Stellen wir uns vor, wir wollten einige Eigenschaften einer Person mit Java verwalten, etwa Name, Alter, Gewicht, Wohnort, Familienstand usw. Dabei helfen uns sogenannte Variablen. Diese dienen zum Speichern und Verwalten von Werten. Dabei gibt es unterschiedliche Typen (auch Datentypen genannt), etwa für Texte, Zahlen und Wahrheitswerte. Wir schauen uns dies zunächst einmal einführend an und erweitern dann unser Wissen Schritt für Schritt, beispielsweise um ergänzende Infos zu Wertebereichen oder Aktionen mit den Variablen. Zum Einstieg betrachten und nutzen wir folgende Typen:

String

– Speichert textuelle Informationen, z. B. "Hallo". In Java werden diese in doppelte Anführungszeichen eingeschlossen und Strings genannt.

char

– Speichert einzelne Zeichen, wie z. B. 'a' oder 'B'. Solche Zeichenwerte sind von einfachen Anführungszeichen eingeschlossen.

int

und

long

– Speichern Ganzzahlen, wie 123 oder -4711. Für

int

geht der Wertebereich von etwa -2 Milliarden bis 2 Milliarden, für

long

ist er noch viel größer.

float

und

double

– Speichern Gleitkommazahlen (mit Vor- und Nachkommastellen), wie 72,71 oder -1,357. Achtung: Weil Java dem amerikanischen Sprachraum entstammt, werden als Dezimaltrenner Punkte statt Kommata verwendet. Somit muss es im Java-Programm

72.71

und

-1.357

heißen. Der Typ

float

besitzt eine geringere Genauigkeit und kann somit weniger Nachkommastellen als der Typ

double

verwalten.

boolean

– Speichert Wahrheitswerte als wahr oder falsch. In Java sind diese durch

true

oder

false

repräsentiert.

2.2.1Definition von Variablen

In Java erzeugen wir eine Variable, indem wir zunächst den Typ, dann einen Namen sowie eine Wertzuweisung nach folgendem Muster (Syntax genannt) angeben:

Man spricht in diesem Zusammenhang von der Definition. Eine solche Definition wie auch andere Anweisungen müssen in Java normalerweise mit einem Semikolon beendet werden. In der JShell ist dies oft optional und man kann das Ganze wie folgt schreiben:

Lassen Sie uns etwas experimentieren:

Die JShell bestätigt jede Definition einer Variablen mit einer Ausgabe, wobei zunächst der Variablenname, dann ==> und schließlich der Wert folgt. Für das Beispiel mit einer Million sehen wir die Angabe von Unterstrichen, die sich zur Separierung, hier von Tausendersegmenten, eignet – allerdings nur bei der Angabe, nicht bei der internen Repräsentation.

Den aktuellen Wert einer Variablen können wir durch Eingabe das Namens abfragen bzw. auslesen:

jshell> theAnswer

theAnswer ==> 42

Wie oben für theAnswer angedeutet, kann einer Variablen durchaus mehrmals im Programmverlauf an unterschiedlichen Stellen ein anderer Wert zugewiesen werden. Denken Sie etwa an einen Punktestand in einem Spiel, einen Temperaturverlauf pro Tag und eine Variable temperature oder aber an die Modellierung der Tageszeit von morgens, mittags, nachmittags, abends und nachts. Für derart in sich abgeschlossene Wertebereiche existieren Aufzählungen, die wir in Abschnitt 7.4 kennenlernen werden.

Eine solche Variable wird auch bei dem kürzest möglichen Hello-World-Programm automatisch als unbenannte Variable $1 erzeugt:

jshell> "Shortest hello world ever"

$1 ==> "Shortest hello world ever"

Besonderer Typ String

Wie Zahlen kann man auch Strings mit + verbinden. Man spricht hier von Konkatenation. Als Folge entsteht ein neuer String.

Wie gezeigt, sind problemlos mehrere Konkatenationen möglich, ebenso eine Verknüpfung von Zahlen mit einem String:

Der Typ String unterscheidet sich von den anderen vorgestellten Typen dadurch, dass er neben + noch einige weitere spezifische Funktionalitäten bereitstellt. Dies werden wir uns genauer in Kapitel 3 anschauen.

Besonderheit beim Typ char

Der Typ char repräsentiert ein einzelnes Zeichen:

Interessanterweise lassen sich mathematische Aktionen wie + und – ausführen, allerdings entsteht dann ein Zahlenwert vom Typ int. Mithilfe eines später vorgestellten sogenannten Casts kann man durch die Angabe von (char) vor einem Ausdruck diesen wieder in ein Zeichen wandeln (vgl. Abschnitt 7.2.2):

jshell> character + 5

$34 ==> 70

jshell> (char)(character + 5)

$35 ==> 'F'

Wie gezeigt, kann man sich dann per Addition vorwärts durch das Alphabet bewegen. Eine Subtraktion ist ebenfalls möglich, um eine Anzahl an Buchstaben in Richtung A zu springen.

Kurzschreibweise var

Als Kurzschreibweise zur Definition von Variablen gibt es die sogenannte Local Variable Type Inference mit dem reservierten Wort var. Was bedeutet das genauer?

Zuvor haben wir zur Definition von Variablen folgende Syntax genutzt:

Statt einer konkreten Typangabe können wir kürzer var schreiben, um vor allem bei längeren Typangaben etwas Tipparbeit zu sparen.

Java selbst ist so schlau, festzustellen, was der genaue Typ ist. Insbesondere bei längeren Typnamen wird der Sourcecode durch Nutzung von var etwas kürzer und eventuell auch lesbarer: