grundkurs programmieren in java - readingsample · grundkurs programmieren in java von dietmar...

22
Grundkurs Programmieren in Java von Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger 5., aktualisierte und erweiterte Auflage Hanser München 2010 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 41655 0 Zu Inhaltsverzeichnis schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Upload: vuquynh

Post on 17-Sep-2018

236 views

Category:

Documents


3 download

TRANSCRIPT

Grundkurs Programmieren in Java

vonDietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger

5., aktualisierte und erweiterte Auflage

Hanser München 2010

Verlag C.H. Beck im Internet:www.beck.de

ISBN 978 3 446 41655 0

Zu Inhaltsverzeichnis

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Leseprobe

Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger

Grundkurs Programmieren in Java

ISBN: 978-3-446-41655-0

Weitere Informationen oder Bestellungen unter

http://www.hanser.de/978-3-446-41655-0

sowie im Buchhandel.

© Carl Hanser Verlag, München

Kapitel 1

Einleitung

Kennen Sie das auch? Sie gehen in eine Bar und sehen eine wunderschone Fraubzw. einen attraktiven Mann – vielleicht den Partner furs Leben! Sie kontrollierenunauffallig den Sitz Ihrer Kleidung, schlendern elegant zum Tresen und schenkenihr/ihm ein zuckersußes Lacheln. Ihre Blicke sagen mehr als tausend Worte, jederZentimeter Ihres Korpers signalisiert:

”Ich will Dich!“ In dem Moment jedoch, als

Sie ihr/ihm unauffallig Handy-Nummer und E-Mail zustecken wollen, betritt einSchrank von einem Kerl bzw. die Reinkarnation von Marilyn Monroe die Szene.Frau sieht Mann, Mann sieht Frau, und Sie sehen einen leeren Stuhl und eineRechnung uber drei Milchshakes und eine Cola.Wie kann Ihnen dieses Buch helfen, so etwas zu vermeiden? Die traurige Antwortlautet: Gar nicht! Sie konnen mit diesem Buch weder Frauen beeindrucken nochhochgewachsene Kerle niederschlagen (denn dafur ist es einfach zu leicht). WennSie also einen schnellen Weg zum sicheren Erfolg suchen, sind Sie wohl mit ande-ren Werken besser beraten. Wozu ist das Buch also zu gebrauchen? Die folgendenSeiten verraten es Ihnen.

1.1 Java – mehr als nur kalter Kaffee?

Seit dem Einzug von Internet und World Wide Web (WWW) ins offentliche Lebensurfen, mailen und chatten Millionen von Menschen taglich in der virtuellen Welt.Es gehort beinahe schon zum guten Ton, im Netz der Netze vertreten zu sein. ObGroßkonzern oder privater Kegelclub – jeder will seine eigene Homepage.Dieser Entwicklung hat es die Firma Sun zu verdanken, dass ihre Programmier-sprache Java einschlug wie eine Bombe. Am eigentlichen Sprachkonzept war nurwenig Neues, denn die geistigen Vater hatten sich stark an der Sprache C++ orien-tiert. Im Gegensatz zu C++ konnten mit Java jedoch Programme erstellt werden,die sich direkt in Webseiten einbinden und ausfuhren lassen. Java war somit dieerste Sprache fur das WWW.

18 1 Einleitung

Naturlich ist fur Java die Entwicklung nicht stehen geblieben. Die einstige”Netz-

sprache“ hat sich in ihrer Version 6 (siehe z. B. [32] und [26]), mit der wir indiesem Buch arbeiten, zu einer vollwertigen Konkurrenz zu den anderen gangi-gen Konzepten gemausert.1 Datenbank- oder Netzwerkzugriffe, anspruchsvol-le Grafikanwendungen, Spieleprogrammierung – alles ist moglich. Gerade indem heute so aktuellen Bereich

”Verteilte Anwendungsentwicklung“ bietet Ja-

va ein breites Spektrum an Moglichkeiten. Mit wenigen Programmzeilen ge-lingt es, Anwendungen zu schreiben, die das Internet bzw. das World WideWeb (WWW) nutzen oder sogar uber das Netz ubertragen und in gangigenWeb-Browsern gestartet werden konnen. Grundlage dafur bildet die umfang-reiche Java-Klassenbibliothek, die Sammlung einer Vielzahl vorgefertigter Klas-sen und Interfaces, die einem das Programmiererleben wesentlich vereinfachen.Nicht minder interessante Teile dieser Klassenbibliothek statten Java-Programmemit enormen, weitgehend plattformunabhangigen grafischen Fahigkeiten aus. Sokonnen auch Programme mit grafischen Oberflachen portabel bleiben.Dies erklart sicherlich auch das große Interesse, das der Sprache Java in den letz-ten Jahren entgegengebracht wurde. Bedenkt man die Anzahl von Buchveroffent-lichungen, Zeitschriftenbeitragen, Webseiten, Newsgroups, Foren und Blogs zumThema, so wird der erfolgreiche Weg, den die Sprache Java hinter sich hat, of-fensichtlich. Auch im kommerziellen Bereich ist Java nicht mehr wegzudenken,denn die Produktpalette der meisten großen Softwarehauser weist mittlerweile ei-ne Java-Schiene auf. Und wer heute auch nur mit einem Handy telefoniert, kommthaufig mit Java in Beruhrung. Fur Sie als Leserin oder Leser dieses Buchs bedeutetdas jedenfalls, dass es sicherlich kein Fehler ist, Erfahrung in der Programmierungmit Java zu haben.2

1.2 Java fur Anfanger – das Konzept dieses Buches

Da sich Java aus dem etablierten C++ entwickelt hat, gehen viele Buchautoren da-von aus, dass derjenige, der Java lernen will, bereits C++ kennt. Das macht erfah-renen Programmierern die Umstellung leicht, stellt Anfanger jedoch vor unuber-windbare Hurden. Manche Autoren versuchen, Eigenschaften der Sprache Javadurch Analogien zu C++ oder zu anderen Programmiersprachen zu erklaren,und setzen entsprechende Kenntnisse voraus, die den Einstieg in Java problemlosmoglich machen. Wie sollen jedoch Anfanger, die uber diese Erfahrung noch nichtverfugen, ein solches Buch verstehen? Erst C++ lernen und dann Java?Die Antwort auf diese Frage ist ein entschiedenes Nein, denn Sie lernen jaauch nicht Latein, um Franzosisch zu sprechen. Tatsachlich erkennen heutzuta-

1 Die Version 5 brachte gegenuber der Vorgangerversion 1.4 einige sehr interessante Erweiterungen,Erleichterungen und Verbesserungen. In 2010 soll die Version 7 mit weiteren Neuerungen erschei-nen.

2 Als potenzieller Berufseinsteiger oder -umsteiger wissen Sie vielleicht ein Lied davon zu singen,wenn Sie sich Stellenanzeigen im Bereich Software-Entwicklung ansehen – Java scheint allge-genwartig zu sein.

1.2 Java fur Anfanger – das Konzept dieses Buches 19

ge immer mehr Autoren und Verlage, dass die Einsteiger-Literatur straflich ver-nachlassigt wurde. Es ist daher zu hoffen, dass die Zahl guter und verstandlicherProgrammierkurse fur Neulinge weiter zunimmt. Einen dieser Kurse halten Sie ge-rade in den Handen.Wie schreibt man nun ein Buch fur den absoluten Neueinsteiger, wenn man selbstseit vielen Jahren programmiert? Vor diesem Problem standen die Autoren. Essollte den Leserinnen und Lesern die Konzepte von Java korrekt vermitteln, ohnesie zu uberfordern.Maßstab fur die Qualitat dieses Buches war deshalb die Anforderung, dass essich optimal als Begleitmaterial fur einfuhrende und weiterfuhrende Vorlesungenin Bachelor-Studiengangen einsetzen ließ, wie zum Beispiel die Veranstaltungen

”Programmieren I – Java“ und

”Programmierung kommerzieller Systeme – An-

wendungen in Netzen mit Java“ des Instituts fur Angewandte Informatik undFormale Beschreibungsverfahren (Institut AIFB), die jedes Winter- bzw. Sommer-semester am Karlsruher Institut fur Technologie (KIT – Universitat des LandesBaden-Wurttemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft) fur rund 600 bzw. 400 Studierende abgehalten wird.Weil die Autoren auf mehrere Jahre studentische Programmierausbildung (inoben genannten Veranstaltungen, in Kursen an der Dualen Hochschule Baden-Wurttemberg (DHBW) Karlsruhe und in weiterfuhrenden Veranstaltungen im Be-reich Programmieren) zuruckblicken konnen, gab und gibt es naturlich gewisseErfahrungswerte daruber, welche Themen gerade den Neulingen besondere Pro-bleme bereiteten. Daher auch der Entschluss, das Thema

”Objektorientierung“

zunachst in den Hintergrund zu stellen. Fast jedes Java-Buch beginnt mit die-sem Thema und vergisst, dass man zuerst programmieren und

”algorithmisch

denken“ konnen muss, bevor man die Vorteile der objektorientierten Program-mierung erkennen und nutzen kann. Seien Sie deshalb nicht verwirrt, wenn Siedieses sonst so beliebte Schlagwort vor Seite 183 wenig zu Gesicht bekommen.Unser Buch setzt keinerlei Vorkenntnisse aus den Bereichen Programmieren, Pro-grammiersprachen und Informatik voraus. Sie konnen es also verwenden, nichtnur, um Java, sondern auch das Programmieren zu erlernen. Alle Kapitel sind mitUbungsaufgaben ausgestattet, die Sie zum besseren Verstandnis bearbeiten soll-ten. Man lernt eine Sprache nur, wenn man sie auch spricht!In den Teilen III und IV fuhren wir Sie auch in die Programmierung fortgeschrit-tener Anwendungen auf Basis der umfangreichen Java-Klassenbibliothek ein. Wirkonnen und wollen dabei aber nicht auf jedes Detail eingehen, sodass wir alle Le-serinnen und Leser bereits an dieser Stelle dazu animieren mochten, regelmaßigeinen Blick in die so genannte API-Spezifikation3 der Klassenbibliothek [32] zuwerfen – nicht zuletzt, weil wir im

”Programmier-Alltag“ von einem routinierten

Umgang mit API-Spezifikationen nur profitieren konnen. Sollten Sie Schwierig-keiten haben, sich mit dieser von Sun zur Verfugung gestellten Dokumentation

3 API steht fur Application Programming Interface, die Programmierschnittstelle fur eine Klasse, einPaket oder eine ganze Klassen-Bibliothek.

20 1 Einleitung

der Klassenbibliothek zurechtzufinden, hilft Ihnen vielleicht unser kleines Kapi-tel im Anhang C.

1.3 Weitere Infos und Kontakt zu den Autoren

Alle Leserinnen und Leser sind herzlich eingeladen, die Autoren uber Fehler undUnklarheiten zu informieren. Wenn eine Passage unverstandlich war, sollte sie zurZufriedenheit kunftiger Leserinnen und Leser anders formuliert werden. WennSie in dieser Hinsicht also Fehlermeldungen, Anregungen oder Fragen haben,konnen Sie uber unsere Webseite

http://www.grundkurs-java.de/

Kontakt mit den Autoren aufnehmen. Dort finden Sie auch alle Beispielprogram-me aus dem Buch, Losungshinweise zu den Ubungsaufgaben und erganzendeMaterialien zum Download sowie Literaturhinweise, interessante Links, eine Li-ste eventueller Fehler im Buch und deren Korrekturen. Dozenten, die das Mate-rial dieses Buchs oder Teile der Vorlesungsfolien fur eigene Vorlesungen nutzenmochten, sollten sich mit uns in Verbindung setzen.Im Literaturverzeichnis haben wir sowohl Bucher als auch Internet-Links ange-geben, die aus unserer Sicht als weiterfuhrende Literatur geeignet sind und ne-ben Java im Speziellen auch einige weitere Themenbereiche wie zum Beispiel In-formatik, Algorithmen, Nachschlagewerke, Softwaretechnik, Objektorientierungund Modellierung einbeziehen.

1.4 Verwendete Schreibweisen

Wir verwenden Kursivschrift zur Betonung bestimmter Worter und Fettschriftzur Kennzeichnung von Begriffen, die im entsprechenden Abschnitt erst-mals auftauchen und definiert bzw. erklart werden. Im laufenden Text wirdMaschinenschrift fur Bezeichner verwendet, die in Java vordefiniert sindoder in Programmbeispielen eingefuhrt und benutzt werden, wahrend reser-vierte Worter (Schlusselworter, Wortsymbole), die in Java eine vordefinierte, un-veranderbar festgelegte Bedeutung haben, in fetter Maschinenschrift ge-setzt sind. Beide Schriften kommen auch in den vom Text abgesetzten Listingsund Bildschirmausgaben von Programmen zum Einsatz. Java-Programme sindteilweise ohne und teilweise mit fuhrenden Zeilennummern abgedruckt. SolcheZeilennummern sind dabei lediglich als Orientierungshilfe gedacht und naturlichkein Bestandteil des Java-Programms.Literaturverweise auf Bucher und Web-Links werden stets in der Form [nr] mitder Nummer nr des entsprechenden Eintrags im Literaturverzeichnis angegeben.

Kapitel 2

Einige Grundbegriffe aus derWelt des Programmierens

Computer und ihre Anwendungen sind aus unserem Arbeitsalltag wie auch ausder Freizeit nicht mehr wegzudenken. Fast uberall werden heutzutage Daten ver-arbeitet oder Gerate gesteuert. Schatzte man noch Anfang der funfziger Jahre,dass man mit einem Dutzend

”Elektronengehirne“ den Bedarf der ganzen Er-

de decken konne, so findet man heute etwa die gleiche Anzahl an”Rechnern“

(Mikroprozessoren in Videorecordern, Waschmaschinen und ahnlichen Geratenmitgezahlt) oft bereits in einem privaten Haushalt. Uber die Halfte aller Deut-schen

”arbeiten“ zu Hause oder am Arbeitsplatz mit einem Computersystem,

rund 43 Millionen Deutsche1 nutzen bereits das Internet, und an nahezu keinemqualifizierten Arbeitsplatz kommt man ohne Computerkenntnisse aus. Auf demWeg in die Informationsgesellschaft haben daher die Informatik und speziell dieSoftware-Technik eine große volkswirtschaftliche Bedeutung. Grundkenntnisse indiesen Bereichen sind also unerlasslich.Wir werden uns deshalb in diesem Kapitel zunachst ein wenig mit den grundle-genden Prinzipien der Informatik vertraut machen und Sie zumindest teilweise inden Aufbau, die Funktionsweise und die Terminologie der Informatik einfuhren.Ausfuhrliches zu dieser Thematik findet sich z. B. in [4].

2.1 Computer, Software, Informatik und das Internet

Als Computer (deutsch: Rechner) bezeichnet man ein technisches Gerat, dasschnell und meist zuverlassig nicht nur rechnen, sondern allgemein Daten bzw.Informationen automatisch verarbeiten und speichern (aufbewahren) kann. ImUnterschied zu einem normalen Automaten, wie z. B. einem Getrankeautoma-

1 65,8% laut ARD/ZDF-Online-Studie 2008 [22]

22 2 Einige Grundbegriffe aus der Welt des Programmierens

ten, der nur festgelegte Aktionen ausfuhrt, konnen wir einem Computer die Vor-schrift, nach der er arbeiten soll, jeweils neu vorgeben. Beispiele fur solche Ar-beitsvorschriften oder Handlungsanleitungen waren die Regeln fur Kreditberech-nungen unserer Bank oder die Anleitung zur Steuerung von Signalanlagen furunsere Modelleisenbahn. In der Fachsprache heißt eine solche Handlungsanlei-tung Algorithmus. Um dem Computer einen Algorithmus in einer prazisen Formmitzuteilen, muss man diesen als ein Programm (eine spezielle Handlungsanwei-sung, die fur den Computer verstandlich ist) formulieren. Der Computer, zusam-men mit seinen Programmen, wird auch als Computersystem bezeichnet.Generell gesehen setzt sich ein Computersystem zusammen aus den materiellenTeilen, der so genannten Hardware, und den immateriellen Teilen, der so genann-ten Software. Unter dem Begriff Software versteht man nicht nur Programme,sondern auch zugehorige Daten und Dokumentationen. Man unterscheidet dabeizwischen Systemsoftware und Anwendungssoftware. Zur erstgenannten Grup-pe zahlt man ublicherweise das Betriebssystem, Compiler, Datenbanken, Kom-munikationsprogramme und spezielle Dienstprogramme. Beispiele fur Anwen-dungssoftware, also Software, die Aufgaben der Anwender lost, sind Textverar-beitungsprogramme, Tabellenkalkulationsprogramme und Zeichenprogramme.Ein Computer setzt sich zusammen aus der Zentraleinheit und den Peripherie-Geraten, wie in Abbildung 2.1 schematisch dargestellt. Die Zentraleinheit bestehtaus dem Prozessor (er fuhrt die Programme aus) und dem Arbeitsspeicher (inihm werden Programme und Daten, die zur momentanen Programmausfuhrungbenotigt werden, kurzfristig gespeichert). Der Arbeitsspeicher wird haufig auchals RAM (Random Access Memory, deutsch: Direktzugriffsspeicher) bezeichnet.Unter dem Begriff Peripherie-Gerate fasst man Eingabegerate wie Tastatur undMaus, Ausgabegerate wie Bildschirm und Drucker sowie externen Speicher wieFestplatten- oder DVD-ROM-Speicher zusammen.Im Vergleich zum externen Speicher bietet der Arbeitsspeicher eines Rechnerseinen wesentlich schnelleren (lesenden und schreibenden) Zugriff. Die kleinsteEinheit des Arbeitsspeichers wird Speicherzelle genannt. Sie besitzt einen Na-men (Adresse) und kann eine Zahl oder ein Zeichen speichern. Wie viele Infor-mationen ein Speicher insgesamt aufbewahren kann, hangt von seiner Speicher-kapazitat ab, die in Byte bzw. in Form großerer Einheiten wie Kilo-Byte (1024Bytes, abgekurzt KB), Mega-Byte (1024 KB, abgekurzt MB), Giga-Byte (1024 MB,abgekurzt GB) oder Terabyte (1024 MB, abgekurzt TB) angegeben wird. Ein Bytebesteht aus acht binaren Zeichen, so genannten Bits. Ein solches Bit kann zweiZustande annehmen (1 oder 0, an oder aus, wahr oder falsch).Externe Speichermedien (also CDs oder Festplatten) bieten in der Regel eine we-sentlich hohere Speicherkapazitat als der Arbeitsspeicher und dienen der langfri-stigen Aufbewahrung von Programmen und Informationen (Daten). Diese wer-den in so genannten Dateien (englisch: files) abgelegt. Solche Dateien konnen wiruns beispielsweise wie ein Sammelalbum vorstellen, in das wir unsere Daten (dieBilder) ablegen (einkleben). Um eine Datei anzulegen, mussen wir ihr einen Na-men geben. Dieser Name wird zusammen mit den Namen weiterer Dateien in

2.1 Computer, Software, Informatik und das Internet 23

Peripheriegeräte

Diskettenlaufwerk

Tastatur

Maus

Scanner

Bildschirm

Drucker

Fax, Modem,Netzwerkadapter

Festplatte

Zentraleinheit(Prozessor und

Arbeitsspeicher)

Ausgabegeräte

CD/DVD-Laufwerk/Brenner

Eingabegeräte

Abbildung 2.1: Aufbau eines Computers

Verbindung mit Angaben zur Große der Dateien im Inhaltsverzeichnis (englisch:directory) unseres Speichermediums vermerkt. Mehrere Dateien konnen wir auchzu so genannten Ordnern bzw. Verzeichnissen zusammenfassen (ahnlich wie wirunsere Sammelalben in Ordnern abheften), die selbst wieder Namen bekommenund hierarchisch in weiteren Ordnern zusammengefasst werden konnen. Datein-amen werden haufig unter Verwendung eines Punktes (.) in zwei Teile geglie-dert, den eigentlichen Namen und die so genannte Dateinamen-Erweiterung, diemeist den Typ der Datei angibt (z. B. txt fur Text-Dateien, java fur Java-Dateienoder doc fur Dateien eines Textverarbeitungssystems).Heutzutage sind viele Computersysteme uber Datenleitungen oder per Funkund unter Verwendung spezieller Netz-Software miteinander vernetzt, d. h. siekonnen untereinander Informationen austauschen. Man spricht dann von einemNetz oder Netzwerk (englisch: net oder web) und speziell von einem Intranet,wenn die Vernetzung innerhalb einer Organisation oder Firma erfolgt, oder vomInternet, einem weltweiten Computer-Netzwerk.

24 2 Einige Grundbegriffe aus der Welt des Programmierens

0111011011100101011001010111010010010001010011

LD RG1 23MOV RG7 RG2ADD RG2 RG1ADDLDDIVMOV

10 PRINT "HALLO"20 SET A = 730 GOSUB40 PRINT50 GOSUB60 GOTO

public class HelloWorld { public static void main(String[] args){ System.out.println("Hallo!"); }}

Maschinensprache

Assembler

Frühe, problemorientierte Programmiersprache

Java

Abbildung 2.2: Programmiersprachen im Vergleich

Die Computer- und Software-Technik nahm seit ihren Kindertagen eine rasanteEntwicklung von den Rechnern mit Transistortechnik und integrierten Schaltun-gen in Großrechnern und Minicomputern uber die ersten Mikroprozessoren undPersonal Computer Ende der siebziger Jahre bis zu den heutigen leistungsfahigenPCs, Workstations und Supercomputern. So ist es auch nicht verwunderlich, dasssich recht bald eine (seit 1960) eigenstandige Wissenschaftsdisziplin entwickelte,die Informatik. Sie beschaftigt sich mit der theoretischen Analyse und Konzep-tion, aber auch mit der konkreten Realisierung von Computersystemen in denBereichen Hardware, Software, Organisationsstrukturen und Anwender.

2.2 Was heißt Programmieren?

Wie bereits erwahnt, ist ein Programm nichts anderes als ein in einer Program-miersprache formulierter Algorithmus. Diese Sprache erlaubt es den Anwendern(Programmierern), mit dem Computer zu

”sprechen“ und ihm Anweisungen zu

geben. Dieses”Sprechen“ kann nun auf unterschiedliche Arten erfolgen. Man

kann zum Beispiel eine Sprache verwenden, die der Computer (genau genom-men der Prozessor) direkt

”versteht“. Man nennt sie Maschinensprache. Da die

Notation mit Nullen und Einsen nur schwer lesbar ist, verwendet man zur Formu-lierung von maschninennahen Programmen meist eine Assemblersprache, in derjedem binaren Maschinencode ein entsprechender, aus Buchstaben und Ziffernbestehender Assemblercode entspricht. Programme in solchen Sprachen kann derProzessor direkt ausfuhren, doch ist man dabei sehr vom Prozessortyp abhangig.Alternativ kann auch eine benutzernahe bzw. problemnahe Programmiersprachezum Einsatz kommen, die man als hohere Programmiersprache oder auch pro-blemorientierte Programmiersprache bezeichnet. In diesem Fall benotigt man al-lerdings einen Ubersetzer (in Form einer speziellen Software), der die Satze der

2.2 Was heißt Programmieren? 25

Java-Quell-Programm

Java-Bytecode

ausführbaresWindows-Programm

ausführbaresMacOS-

Programmausführbares

Linux-Programm

Java VMfür MacOS

Java VMfür Linux

Java VMfür Windows

Java-Compiler

...

...

...

...

...

...

Abbildung 2.3: Vom Java-Quellprogramm zum ausfuhrbaren Programm

hoheren Programmiersprache in die Maschinensprache oder auch in eine speziel-le

”Zwischensprache“ uberfuhrt. Ein Ubersetzer, der problemorientierte Program-

me in maschinennahe Programme transformiert, wird Compiler genannt. WerdenProgramme nicht vollstandig ubersetzt und spater ausgefuhrt, sondern Anwei-sung fur Anweisung ubersetzt und unmittelbar ausgefuhrt, spricht man von ei-nem Interpreter.Traditionelle hohere Programmiersprachen benotigen fur jeden Prozessortypeinen Compiler, der das jeweilige so genannte Quell-Programm (geschrieben inder Programmiersprache) in ein so genanntes Ziel-Programm (ausfuhrbar aufdem Prozessor) ubersetzt (compiliert). Unser Programm muss daher fur jedenRechner- bzw. Prozessortyp ubersetzt werden. Bei der Entwicklung der SpracheJava hingegen wurde das Ziel angestrebt, plattformunabhangig zu sein, indemman nur einen Compiler fur alle Plattformen benotigt. Dieser Compiler ubersetztdas Quell-Programm (auch Quellcode oder Quelltext genannt) in den so genann-ten Java-Bytecode, der unabhangig von einem bestimmten Prozessor ist, jedochnicht unmittelbar ausgefuhrt werden kann. Erst der Java-Interpreter analysiertden erzeugten Bytecode schrittweise und fuhrt ihn aus. Der Bytecode ist also por-tabel (auf unterschiedliche Plattformen ubertragbar) und sozusagen fur eine Artvirtuellen Prozessor (man spricht hier auch von einer virtuellen Maschine, ab-gekurzt VM) gefertigt. Abbildung 2.3 verdeutlicht diesen Sachverhalt.Unter Programmieren versteht man nun eine Tatigkeit, bei der unter Einsatz einergegebenen Programmiersprache ein gestelltes Problem zu losen ist. Programmie-ren heißt also nicht einfach nur, ein Programm einzutippen. Meist sind eine gan-ze Reihe von Arbeitsschritten notig, bis ein Problem zufriedenstellend mit demComputer gelost ist (vgl. Abbildung 2.4). Die Bezeichnung

”Programmieren“ um-

26 2 Einige Grundbegriffe aus der Welt des Programmierens

Problem

ausführbaresProgramm

Problemlösung?

Programm

algorithmischeBeschreibung

Analyse / Modellierung

Programmierung / Codierung

Übersetzung / Compilierung

Ausführung / Interpretierung

Welches Problem ist zu lösen?Was erwarte ich von meiner Lösung?

Wie lässt sich das Problem lösen?

Wie bringe ich meine Idee dem Computer bei?Z. B. durch ein Java-Programm?

Wie muss der ausführbare Code aussehen?Z. B. Java-Bytecode oder Maschinencode?

Ist das Problem gelöst?

Abbildung 2.4: Was bedeutet Programmieren?

fasst daher eine ganze Kette von Arbeitsgangen, beginnend bei der Analyse desProblems und endend bei der Kontrolle oder Interpretation der Resultate.Bei der Problemanalyse oder auch Modellierung mussen wir ein meistens um-gangssprachlich formuliertes Problem analysieren und so aufbereiten (modellie-ren), dass sich die einzelnen Teilprobleme leicht und ubersichtlich programmierenlassen. Wir erstellen somit eine algorithmische Beschreibung fur die Losung desProblems bzw. seiner Teilprobleme. Wenn wir diese algorithmische Beschreibungin eine Programmiersprache ubertragen und unser Programm in einen Compu-ter eingeben, nennt man diesen Vorgang Codierung. Dazu verwenden wir einenTexteditor (auch nur Editor genannt), in dem wir das Programm eintippen unddanach in einer Datei speichern. Schließlich muss unser Programm vom Compilerubersetzt werden, bevor wir es ausfuhren und damit testen konnen, ob es unserursprunglich formuliertes Problem korrekt lost.In nahezu allen Fallen werden erstmalig codierte Programme in irgendeiner FormFehler aufweisen. Dies konnen einfache Schreibfehler, so genannte Syntaxfehler(z. B. durch falschen Einsatz von Sprachelementen) oder so genannte Semantik-fehler (z. B. durch falschen logischen Aufbau des Programms) sein. Auch ins-gesamt gesehen kann unser Programm eine falsche Struktur haben, was mei-stens auf eine fehlerhafte Problemanalyse zuruckzufuhren ist. Selbst nach um-fangreichen Tests mussen

”richtig“ erscheinende Programme nicht zwangsweise

korrekte Programme sein. Erfahrungsgemaß enthalt ein hoher Prozentsatz allertechnisch-wissenschaftlichen Programme auch nach umfassenden Tests noch Feh-ler, die nur mit hohem Aufwand oder durch Zufall entdeckt werden konnen.

Teil I

Einstieg in das Programmierenin Java

Kapitel 3

Aller Anfang ist schwer

Diese sprichwortliche Feststellung gilt naturgemaß auch fur das Erlernen einerProgrammiersprache. Die Ursache dieser Anlaufschwierigkeiten liegt moglicher-weise darin, dass selbst eine noch so einfach gehaltene Einfuhrung ins Program-mieren stets ein gewisses Mindestmaß an Formalismus benotigt, um bestimm-te Sachverhalte korrekt wiederzugeben. Einsteiger werden dadurch leicht abge-schreckt und benotigen einige Zeit, um das Ganze zu verdauen. Wir konnen Ihnenan dieser Stelle daher nur wunschen, dass Sie sich nicht bereits durch dieses Kapi-tel abschrecken lassen, weiterzulesen. So manche Hurde ist einfacher zu nehmen,als es zunachst den Anschein hat. Sollten Sie also das eine oder andere Detail inunserem ersten Beispiel nicht auf Anhieb verstehen, ist das kein Grund zur Be-sorgnis. Wir gehen in den folgenden Kapiteln auf jeden der hier beschriebenenPunkte nochmals naher ein.

3.1 Mein erstes Programm

Wenn man an Anwendungsmoglichkeiten von Computern oder Rechnern denkt,so fallen einem zuerst vielleicht einfache Berechnungen ein.1 Jeder hat wohl schonmit einem Taschenrechner gearbeitet, und daher wollen wir mit einer sehr einfa-chen Rechenaufgabe anfangen.Ziel dieses Kapitels ist es, das folgende kleine Beispielprogramm zu verstehenund zu sehen, dass Java in der Lage ist, unserem Rechner die Funktionalitat eines

1 Wer hier gerade laut”Spiele“ rufen wollte, dem sei gesagt, dass es auch in Java programmierte

Spiele gibt. Allerdings wird der oder die Lernende mehr tun mussen, als sich nur das vorliegendeBuch zu Gemute zu fuhren, um solche komplexen Programme verstehen oder schreiben zu konnen.Spieleprogrammierung verlangt Kenntnisse in Computergrafik, Prozesssteuerung und kunstlicherIntelligenz, die wir an dieser Stelle unmoglich im Detail vermitteln konnen. Bevor Sie nun aberenttauscht das Buch aus der Hand legen, wollen wir erwahnen, dass Sie in den folgenden Kapitelnvieles lernen werden, das es Ihnen ermoglichen wird, das eine oder andere kleine Spiel selber zuprogrammieren. Mehr zu diesem Thema finden Sie in dem auf der Buch-Webseite zur Verfugunggestellten Zusatzmaterial.

30 3 Aller Anfang ist schwer

einfachen Taschenrechners zu verleihen. Dieses Programm macht nichts weiter,als 3 plus 4 zu berechnen und anschließend auf dem Bildschirm auszugeben. ImFolgenden werden wir das Programm Zeile fur Zeile untersuchen, in den Com-puter eingeben und schließlich auch ausfuhren lassen.

1 public class Berechnung {

2 public static void main(String[] args) {

3 int i;

4 i = 3 + 4;

5 System.out.println(i);

6 }

7 }

Bitte nicht erschrecken, wenn dieser Programmtext relativ umfangreich fur eineeinfache Berechnung wirkt. Wie wir spater sehen werden, benotigt jedes Java-Programm einleitende und abschließende Worte (ahnlich wie die Marchen unse-rer Kindheit),2 die immer gleich sind.3

3.2 Formeln, Ausdrucke und Anweisungen

Sehen wir uns zunachst die Zeile in der Mitte an:

i = 3 + 4;

Diese Zeile sollte jeder, der schon einmal eine physikalische oder mathematischeFormel gesehen hat, lesen und verstehen konnen. Rechts vom Gleichheitszeichenaddieren wir die Werte 3 und 4, links davor steht eine Art Unbekannte, das i.Naturlich sind in Java auch kompliziertere Formeln moglich, und sobald wir einwenig mehr von der Sprache kennen gelernt haben, konnen wir viele Formeln ausunserem Physik- oder Mathematikbuch direkt ubertragen.Wir sehen in obiger Zeile aber auch einen wichtigen Unterschied zu einer Formelin einem Buch: Die Formel ist mit einem Semikolon abgeschlossen. Dieser Strichpunktam Ende der Programmzeile kennzeichnet in der Sprache Java eine so genannteAnweisung. Der Computer wird also angewiesen, etwas fur uns zu tun.Das Gleichheitszeichen steht aber in der Sprache Java nicht fur einen mathema-tischen Vergleich, sondern fur eine Zuweisung. Das heißt: Bei unserer Anwei-sung handelt es sich um eine Vorschrift, die der Unbekannten (der Variablen i)links vom Gleichheitszeichen den Wert zuweist, der durch die Formel rechts vomGleichheitszeichen berechnet wird. Eine solche Berechnungsvorschrift fur einenWert, wie es die obige rechte Seite der Zuweisung darstellt, wird in Java Aus-druck genannt.Auch wenn Java erlaubt, mehrere Anweisungen pro Zeile zu schreiben, solltenwir versuchen, moglichst immer nur eine Anweisung in jede Zeile zu packen. An-dernfalls wird unser Programmtext sehr unubersichtlich, und schon eine Woche

2”Es war einmal ...“ sowie

”... und wenn sie nicht gestorben sind, leben sie noch heute.“

3 Zumindest so lange, bis wir den Sinn dieses Rahmens verstanden haben und danach auchverandern konnen.

3.3 Zahlenbeispiele 31

spater konnen wir, unser Freund oder unser Kollege dann aus dem Programm-text nicht mehr herauslesen, was wir eigentlich programmiert haben. Wie so oftgilt also auch hier: Weniger (Anweisungen pro Zeile) ist mehr (Ubersichtlichkeit).

3.3 Zahlenbeispiele

Als Nachstes sehen wir uns die Zahlen an, die wir addieren. Wahrend es fur unsfast egal ist, ob wir in einer Formel mit ganzen Zahlen rechnen oder mit solchen,die Nachkommastellen haben, ist dies fur Computer ein elementarer Unterschied,da unterschiedliche Zahlen in unterschiedlichen Großenordnungen dargestelltwerden konnen. Man kann sich dies leicht verdeutlichen, wenn man uberlegt,welches die großte Zahl mit zwei Ziffern ist. Abhangig von der Darstellungsartkann dies im Dezimalsystem die 99 (beide Ziffern fur die Darstellung einer gan-zen Zahl), die 9.9 (erste Ziffer Vorkommastelle, zweite Ziffer Nachkommastelle)oder die 9E9 (= 9 ·109 = 9000000000, also eine Ziffer fur die Vorkommastelle, eineZiffer fur einen Exponenten) sein.Die beiden Zahlen des Beispielprogramms sind ganze Zahlen (englisch: integer).Hier noch ein paar weitere Beispiele fur ganze Zahlen:

0 1 -1 2147483647

Ganze Zahlen konnen in Java nicht beliebig lang sein. Ab einer bestimmten Langemuss man sie sogar als lange Zahl kennzeichnen, indem man ein L (fur long inte-ger, lange Ganzzahl) anhangt (siehe Abschnitt 4.3.1).Zahlen mit einem Vor- und einem Nachkommateil nennen wir im FolgendenGleitkommazahlen.4 Fur diese konnen wir die wissenschaftliche Exponenten-schreibweise verwenden. Aber Achtung: Obwohl sie Gleitkommazahlen heißen,mussen wir das englische Zahlenformat5 mit einem Punkt als Dezimaltrenner ver-wenden (das englische

”floating point numbers“ ist hier sprachlich zutreffender).

Hier nun einige Gleitkommazahlen:

0.0 1.0 -1.0 2147483647.0

42.314159 -3.7E2 1.9E-17 .12345

Die Schreibweise -3.7E2 bzw. 1.9E-17 sollte vom Taschenrechner her bekanntsein. Sie wird als Exponentenschreibweise oder auch wissenschaftliche Notationbezeichnet. Die Schreibweise bedeutet, dass die links von E stehende Zahl miteiner Potenz von 10 zu multiplizieren ist, deren Exponent gerade rechts von E

steht. So bedeutet beispielsweise die Schreibweise 1.78E4

1.78 · 104 = 1.78 · 10000 = 17800

und E kann demnach als”mal 10 hoch“ gelesen werden.

4 Dies deutet nicht nur auf den Nachkommateil hin, sondern beschreibt auch die interne Zahlendar-stellung des Computers. Wie diese interne Darstellung genau aussieht, ist Thema weiterfuhrenderInformatik-Vorlesungen, -Kurse und -Bucher.

5 Beispielsweise steht im englischen Zahlenformat 3.14 fur 3,14 und 0.123 fur 0,123.

32 3 Aller Anfang ist schwer

3.4 Verwendung von Variablen

Noch vor der eigentlichen Anweisung mit der Berechnung finden wir in unseremProgramm die Zeile

int i;

Damit sagen wir dem Computer, dass wir in unserem Programm in den folgendenZeilen eine Variable mit dem Namen i verwenden mochten. Bei der Ausfuhrungdes Programms muss namlich

”Platz geschaffen“, d. h. ein Speicherbereich dafur

vorgesehen werden, den Inhalt der Variable aufzunehmen. Diese Zeile, die wirVariablendeklaration nennen, ist auch eine Art Anweisung (hier wird als AktionSpeicherplatz fur die Variable i angelegt). Wie jede Anweisung beenden wir auchdiese mit einem abschließenden Semikolon.i ist ein recht kurzer Name fur eine Variable. Spater werden wir nach Moglichkeitlangere, moglichst aussagekraftige Namen verwenden, beispielsweise summe.Welche Namen wir fur Variablen (siehe Abschnitt 4.4.1) wahlen konnen, erlautertAbschnitt 4.1.2 genauer.Mit int legen wir den Datentyp der Variablen fest. int steht dabei fur integer,d. h. (wir erinnern uns an den vorangegangenen Abschnitt) dass diese Variableganze Zahlen im Bereich von ca. ±2, 1 Milliarden aufnehmen kann. Wir werdenspater anhand einer Ubersicht die verschiedenen Datentypen kennen lernen (sie-he Abschnitt 4.3).

3.5”Auf den Schirm!“

Wenn wir das Ergebnis unserer Berechnung auf dem Bildschirm ausgeben wollen,mussen wir dies dem Rechner mitteilen. Dies geschieht in der folgenden Zeile:

System.out.println(i);

System.out.println ist in Java der Name einer Methode6 (ein Unterpro-gramm, also eine untergeordnete Struktureinheit beim Entwerfen von Program-men), mit der man Text und Zahlen auf dem Bildschirm (genauer gesagt auf dasso genannte Konsolenfenster, kurz: Konsole) ausgeben kann.7 In Klammern folgtnach dem Methodennamen das, was wir der Methode ubergeben wollen, in die-sem Fall also das, was wir ausgeben wollen, namlich der Wert der Variablen i.Auch diese Zeile ist laut Java-Sprachdefinition eine Anweisung (also durfen wirauch hier das Semikolon nicht vergessen) und wird haufig als Ausgabeanweisungbezeichnet.Die erwahnte Methode ist recht flexibel anwendbar. Wir konnen beispielswei-se auch unmittelbar vor der Ausgabe des Wertes i einen Text ausgeben, der inAnfuhrungszeichen eingeschlossen wird:

6 Mit Methoden beschaftigen wir uns ausfuhrlich in Kapitel 6.7 Warum es sinnvoll ist, der Methode einen so langen und dreigeteilten Namen zu geben, wird erst

in spateren Abschnitten des Buches deutlich. Im Moment soll uns die Tatsache genugen, dass dieMethode genau das leistet, was sie leisten soll.

3.6 Das Programmgerust 33

System.out.println("Das Ergebnis ist: ");

System.out.println(i);

Will man beides (Werte bzw. Zahlen und Text) so kombinieren, dass es in einerZeile ausgegeben wird, gibt es dafur zwei Moglichkeiten. Zum einen konnen wirganz einfach die erste Ausgabeanweisung leicht verandern:

System.out.print("Das Ergebnis ist: ");

System.out.println(i);

Bitte beachten Sie, dass jetzt in der ersten Zeile nur print (und nicht println)steht! Das

”ln“ im Methoden-Namen steht als Abkurzung fur

”line“ und druckt

aus, dass nach der Ausgabe eine neue Zeile begonnen wird. Dies bedeutet, dassjetzt nach der ersten Ausgabe kein Zeilenvorschub (

”line feed“) durchgefuhrt

wird. Nach der Ausgabe des Textes wird somit nicht in der nachsten, sondernin der gleichen Zeile weitergeschrieben. Unser Programm wird somit auf demBildschirm (auf dem Konsolenfenster) nur eine Zeile erzeugen, obwohl wir imQuelltext zwei Zeilen dafur verwenden:

Konsole

Das Ergebnis ist: 7

Zum anderen konnen wir die beiden Ausgabeanweisungen auch zu einer einzi-gen zusammenfassen und schreiben:

System.out.println("Das Ergebnis ist: " + i);

Wir verknupfen dazu alle Teile unserer gewunschten Ausgabe mit dem Zeichen +.Dieser so genannte +-Operator kann in Java nicht nur zur Addition von Zahlen,sondern auch zur Aneinanderfugung von Texten (so genannten Zeichenketten)benutzt werden. Solche Zeichenketten werden dabei einfach aneinandergehangt,also zu einer einzigen Zeichenkette zusammengefasst. Das ist notwendig, weilwir der Methode System.out.println nur genau ein Argument ubergebenkonnen. Um auch, wie in unserem Beispiel, Werte (z. B. von Variablen oder Aus-drucken) an eine Zeichenkette hangen zu konnen, werden diese automatischzunachst in eine Zeichenkette gewandelt.Wie wir spater sehen werden, kann die Vermischung von Texten und Zahlenwer-ten bei der Ausgabeanweisung unter Umstanden zu Problemen fuhren. Zunachstaber wollen wir die hier vorgestellten Methoden (nahezu) bedenkenlos verwen-den.

3.6 Das Programmgerust

Nun fehlt uns zum Verstandnis unseres ersten Programms nur noch der Rahmen,den wir bis auf Weiteres in jedem Quelltext verwenden. Dazu ist es wichtig zuwissen, dass Java zur Strukturierung der Quelltexte Blocke vorsieht, die mit ei-ner offnenden geschweiften Klammer { begonnen und mit einer schließenden ge-schweiften Klammer } beendet werden. In unserem obigen Quelltext konnen wirdemnach zwei Blocke ausmachen:

34 3 Aller Anfang ist schwer

1. Die Klasse: Vielleicht haben Sie schon irgendwo gelesen, dass Java eine ob-jektorientierte Programmiersprache ist. Was das genau bedeutet, soll uns hierzunachst nicht weiter interessieren, aber wie fur objektorientierte Sprachenublich, erzeugt Java seine Objekte aus so genannten Klassen. Eine Klasse istdemnach die oberste Struktureinheit und sieht z. B. folgendermaßen aus:

public class Berechnung {

// hier steht sonst der Rest des Quelltexts fuer die Klasse

}

Unmittelbar vor der offnenden Klammer steht der Name der Klasse, in die-sem Fall Berechnung – so heißt schließlich auch unser Programm. Wichtig:Der Name der Klasse muss exakt (Groß-/Kleinschreibung!) dem Dateinamenentsprechen, unter dem wir diese Klasse speichern, wobei der Dateiname nochdie Erweiterung .java tragt. In unserem Fall mussen wir die Klasse also in derDatei Berechnung.java speichern.

Vor dem eigentlichen Namen stehen noch die beiden Schlusselworterpublicund class. Wir wollen dies im Moment einfach akzeptieren, durfen sie aberbei unseren selbst definierten Klassen auf keinen Fall vergessen.

Die erlaubten Klassennamen unterliegen gewissen Regeln (siehe Abschnitt4.1.2), die wir spater noch kennen lernen. Wir sollten uns aber auf alle Falledaran halten, einen Klassennamen immer mit einem Großbuchstaben zu begin-nen (vergleiche auch Anhang A).

2. Die Hauptmethode: Innerhalb von Klassen gibt es untergeordnete Struktur-einheiten, die Methoden. Jede Klasse, die, wie unsere Beispiel-Klasse, einausfuhrbares Programm darstellen soll, besitzt die Methode main:8

public static void main(String[] args) {

// hier steht eigentlich die Berechnung

}

Wir erkennen den erwahnten Methodennamen main. Den Rest der ersten Zei-le mussen wir zunachst ganz einfach auswendig lernen – man achte dabei ins-besondere auf das groß geschriebene

”S“ bei String.

Im Abschnitt 4.2.1 wird noch einmal auf das Programmgerust eingegangen. Rich-tig verstehen werden wir es aber erst sehr viel spater.

8 Wenn wir spater Java wirklich objektorientiert kennen gelernt haben, werden wir auch Klassen ohnediese Methode benutzen – aber bis dahin dauert es noch einige Zeit.

3.7 Eingeben, ubersetzen und ausfuhren 35

3.7 Eingeben, ubersetzen und ausfuhren

Jetzt sind wir so weit, dass wir

den Quelltext unseres Programms eingeben konnen,

danach diesen Quelltext vom Java-Compiler in einen interpretierbaren Code,den so genannten Java-Bytecode, ubersetzen (compilieren) lassen konnen und

schließlich diesen Bytecode vom Java-Interpreter ausfuhren (interpretieren)lassen konnen.

Zur Eingabe des Quelltextes unseres Programms mussen wir naturlich einen aufunserem Rechner verfugbaren Editor bzw. eine geeignete Java-Entwicklungsum-gebung verwenden. Auf solche Systeme, ihre Installation und ihre Bedienungkonnen wir hier naturlich nicht eingehen. Auf der Webseite zu unserem Buch[31] finden Sie jedoch alles, was Sie brauchen: Editoren bzw. Entwicklungsum-gebungen, Tools, Installationsanleitungen und Dokumentationen bzw. Web-Linkszu weiteren Informationen und fortgeschrittenen Entwicklungsumgebungen.In diesem Abschnitt wollen wir nun noch auf die Schritte Ubersetzen undAusfuhren eingehen. Dabei beschreiben wir, wie wir diese Vorgange mit Hilfe desJDK (Java Development Kit) bzw. des JSDK (Java Software Development Kit) [37]durchfuhren konnen. Das JDK bzw. JSDK ist eine frei erhaltliche Sammlung vonEntwicklungswerkzeugen der Java Platform, Standard Edition (Java SE) von derFirma Sun. Diese Werkzeuge konnen wir ohne Verwendung einer speziellen grafi-schen Entwicklungsumgebung einsetzen. Das heißt, wir stoßen die Vorgange ein-fach durch spezielle Kommandos an, die wir in einem Konsolenfenster eingebenkonnen.Bei den folgenden Angaben gilt es, die Groß-/Kleinschreibung unbedingt zu be-achten. Nach jeder Zeile muss die Return- bzw. Enter-Taste gedruckt werden, umdas Kommando auszufuhren.Wenn wir also davon ausgehen, dass unsere Klasse bzw. unser Programm in derDatei Berechnung.java abgespeichert ist, konnen wir mit dem Kommando

javac Berechnung.java

den Quelltext in unserer Datei vom Java-Compiler (das Programm heißt javac)in den Java-Bytecode ubersetzen lassen. Wenn Fehlermeldungen auf dem Bild-schirm ausgegeben werden, haben wir vermutlich den Quelltext nicht exakt ab-getippt. Wir mussen die Fehler mit Hilfe des Editors erst korrigieren und denUbersetzungsvorgang danach noch einmal starten. Wenn der Compiler das feh-lerfreie Programm ubersetzen konnte, wurde die Datei Berechnung.class, dieBytecode-Datei, erzeugt.Auf die Datei Berechnung.class wollen wir den Java-Interpreter (das Java-Programm heißt java) anwenden. Wahrend beim Aufruf des Java-Compilers derDateiname komplett angegeben werden muss (also mit der Erweiterung .java),darf die Erweiterung beim Aufruf des Java-Interpreters nicht angegeben werden.Mit dem Kommando

36 3 Aller Anfang ist schwer

java Berechnung

konnen wir also diesen Bytecode ausfuhren lassen. Auf dem Bildschirm sollte nunnach kurzer Zeit Folgendes erscheinen:

Konsole

Das Ergebnis ist: 7

Wir haben es also geschafft, unser erstes Programm zum Laufen zu bringen.

3.8 Ubungsaufgaben

Aufgabe 3.1

Auf der zu diesem Buch gehorigen Website [31] befindet sich eine Anleitung, wieSie auf Ihrem Rechner Java installieren und das in diesem Kapitel beschriebeneBeispielprogramm ubersetzen und starten konnen. Befolgen Sie diese Instruktio-nen, um auch zukunftige Ubungsaufgaben bearbeiten zu konnen.

Aufgabe 3.2

Geben Sie das folgende Programm in Ihren Computer ein, und bringen Sie es zumLaufen.

1 public class Uebung {

2 public static void main(String[] args) {

3 System.out.println("Guten Tag!");

4 System.out.println("Mein Name ist Puter, Komm-Puter.");

5 }

6 }

Aufgabe 3.3

Was passiert, wenn Sie im vorigen Programm in Zeile 3 das Semikolon entfernen?Was passiert, wenn Sie statt einem zwei Semikolons einfugen?