5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige...

5
5 Grundlagen der Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei ber¨ ucksichtigt werden m¨ ussen. 5.1 Grunds¨ atzliches zur Syntax von Java–Programmen Zun¨ achst sollten Sie wissen, daß der Compiler sich nicht um die Zeilenstruktur Ihres Programms k¨ ummert — f¨ ur ihn gibt es zwischen Leerzeichen und Zeile- numbr¨ uchen keinen besonderen Unterschied. Wir h¨ atten das Beispiel Kreuz.java aus dem letzten Kapitel auch so schreiben onnen: /* * Benutzt die Turtle, um ein Kreuz zu zeichnen. */import eip.TurtleScreen;import eip.Turtle; class Kreuz {public static void main( String[] args ) {TurtleScreen ts = new TurtleScreen(); Turtle t = new Turtle( ts ); t.pd(); t.fd( 200 ); t.bk( 100 ); t.rt( 90 );t.fd( 100 );t.bk( 200 );}} Dem Compiler ist es egal, wie das Programm formatiert ist. F¨ ur uns Menschen ist aber dieses Programm sehr viel schlechter zu lesen als das urspr¨ ungliche. Da er nicht die Zeilenstruktur des Programmes verwendet, muß der Compiler irgendwie anders erkennen, wann ein Befehl im Programm endet und der n¨ achste Befehl beginnt. Darum muß in Java jede Anweisung mit einem Semikolon enden. Das gilt aber nicht f¨ ur die Definition einer Klasse oder Methode. Wenn der Compiler eine Datei bearbeitet, sieht er zun¨ achst nur einen Strom von Zeichen. Diese Zeichen faßt er zu gr¨ oßeren Einheiten zusammen. Um etwas ur den Compiler verst¨ andliches zu programmieren, m¨ ussen Sie wissen, was f¨ ur Einheiten der Compiler versteht. Java identifiziert in seinem Eingabestrom die folgenden Einheiten: Schl¨ usselw¨ orter — Ein Schl¨ usselwort ist ein Wort, welches innerhalb der Pro- grammiersprache eine genau festgelegte Bedeutung hat. In Java sind fol- gende W¨ orter als Schl¨ usselw¨ orter reserviert (das brauchen Sie sich nicht zu merken): abstract boolean break byte case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new package private protected public return short static super switch synchronized this true throw throws transient try void volatile while 30

Transcript of 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige...

Page 1: 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berucksichtigt werden m¨ ¨ussen.

5 Grundlagen der Java-Syntax

Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdateiberucksichtigt werden mussen.

5.1 Grundsatzliches zur Syntax von Java–Programmen

Zunachst sollten Sie wissen, daß der Compiler sich nicht um die ZeilenstrukturIhres Programms kummert — fur ihn gibt es zwischen Leerzeichen und Zeile-numbruchen keinen besonderen Unterschied.

Wir hatten das Beispiel Kreuz.java aus dem letzten Kapitel auch so schreibenkonnen:

/*

* Benutzt die Turtle, um ein Kreuz zu zeichnen.

*/import

eip.TurtleScreen;import eip.Turtle;

class Kreuz {public static void main( String[]

args ) {TurtleScreen ts = new

TurtleScreen(); Turtle t = new Turtle( ts );

t.pd(); t.fd(

200 ); t.bk( 100 ); t.rt( 90

);t.fd( 100 );t.bk( 200 );}}

Dem Compiler ist es egal, wie das Programm formatiert ist. Fur uns Menschenist aber dieses Programm sehr viel schlechter zu lesen als das ursprungliche.Da er nicht die Zeilenstruktur des Programmes verwendet, muß der Compilerirgendwie anders erkennen, wann ein Befehl im Programm endet und der nachsteBefehl beginnt. Darum muß in Java jede Anweisung mit einem Semikolon enden.Das gilt aber nicht fur die Definition einer Klasse oder Methode.

Wenn der Compiler eine Datei bearbeitet, sieht er zunachst nur einen Stromvon Zeichen. Diese Zeichen faßt er zu großeren Einheiten zusammen. Um etwasfur den Compiler verstandliches zu programmieren, mussen Sie wissen, was furEinheiten der Compiler versteht.

Java identifiziert in seinem Eingabestrom die folgenden Einheiten:

Schlusselworter — Ein Schlusselwort ist ein Wort, welches innerhalb der Pro-grammiersprache eine genau festgelegte Bedeutung hat. In Java sind fol-gende Worter als Schlusselworter reserviert (das brauchen Sie sich nichtzu merken):

abstract boolean break byte case

catch char class const continue

default do double else extends

false final finally float for

goto if implements import instanceof

int interface long native new

package private protected public return

short static super switch synchronized

this true throw throws transient

try void volatile while

30

Page 2: 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berucksichtigt werden m¨ ¨ussen.

Jedes dieser Worter hat fur Java eine ganz spezielle Bedeutung. Wannim-mer eines im Programmtext auftaucht, muß es in genau der vorgesehenenArt und Weise benutzt werden.

Neben den Schlusselwortern kennt Java noch einige Symbole, die beispiels-weise beim Rechnen mit Zahlen benutzt werden:

= > < ! ~ ? :

== <= >= != && || ++

-- + - * / & |

^ % << >> >>> += -=

*= /= &= |= ^= %= <<=

>>= >>>=

Bezeichner — Bezeichner werden verwendet, um Objekten, Klassen, Attribu-ten, Methoden und anderen Dingen im Java-Programm Namen zu geben.Namen sind sehr wichtig; beispielsweise konnen Sie ein Objekt nur ver-wenden, wenn Sie das Objekt unter einem gewissen Namen kennen.

Beispiel: In der Beispielklasse Kreuz.java auf Seite ?? wurden die

Schlusselworter import, class, public, static, void, public und new

verwendet.

Es wurden die Bezeichner eip.TurtleScreen, eip.Turtle, Kreuz, main,

args, String , TurtleScreen, ts, Turtle, t, pd, fd, bk und rt benutzt.

Bei der Wahl von Bezeichnern durfen Sie Ihrer Phantasie fast freien Lauflassen. Allerdings sollten Sie dafur sorgen, daß die von Ihnen gewahltenBezeichner aussagekraftig sind und das bezeichnete Objekt gut charakte-risieren. Java ist es egal, ob Sie wir die Turtle mit t oder mit ruebe. Einenmenschlichen Leser wurden Sie dadurch aber verwirren.

Ein Bezeichner darf beliebig lang werden, und bei der Wahl eines Bezeich-ners werden Sie lediglich durch folgende Bedingungen eingeschrankt:

• Ein Bezeichner darf groß- und kleingeschriebene Buchstaben13, dieZiffern 0-9 und die Sonderzeichen _ und $ enthalten. Dabei solltenSie von der Verwendung des Zeichens $ aber absehen — es ist furvom Compiler automatisch generierte Bezeichner vorgesehen.

• Ein Bezeichner darf nicht mit einer Ziffer anfangen.

• Schlusselwort durfen Sie nicht als Bezeichner verwenden.

Wichtig zu bemerken ist noch, daß Java großgeschriebene und kleinge-schriebene Buchstaben streng unterscheidet — fur Java sind einBezeichnerund EinBezeichner zwei vollig verschiedene Dinge.

Wenn Sie Bezeichner wahlen, sollten Sie diese Eigenschaft von Java abernicht mißbrauchen— ein menschlicher Leser Ihres Programm konnte mogli-cherweise durcheinanderkommen. Wenn Sie fur verschiedene Dinge Be-zeichner verwenden, die sich nur durch die Groß- Kleinschreibung unter-scheiden, wird es einem Menschen sicher schwerfallen, sich zu merken,wofur welcher Bezeichner steht. Vermeiden Sie daher die Verwendung vonBezeichnern, die sich nur durch die Groß- Kleinschreibung unterscheiden.

13Es ist sogar moglich, chinesische oder russische Buchstaben zu verwenden — wie das geht,

werden wir Ihnen aber nicht erzahlen.

31

Page 3: 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berucksichtigt werden m¨ ¨ussen.

Beispiel: Hier eine Liste gultiger Bezeichner:

i3 String MAX VALUE Lupo1234 392

i mEiNeKlAsSe meineKlasse mein segel boot

Nun folgt eine Liste ungultiger Bezeichner:

1haus Ungultig: beginnt mit Ziffer.

class Ungultig: class ist ein Schlusselwort.

ab-c Ungultig, weil ein Minus nicht in einem Bezeichner

enthalten sein darf. Java wurde denken, daß Sie hier

das durch c bezeichnete Objekt vom mit ab bezeich-

neten Objekt substrahieren wollen.

#bdd Ungultig: enthalt ein nicht erlaubtes Sonderzeichen.

ein Objekt Ungultig: enthalt ein Leerzeichen.

Und schließlich eine Liste von Bezeichnern, die zwar erlaubt sind, die

Sie aber dennoch nicht verwenden sollten.

Meine$Klasse Das Symbol $ sollten Sie nicht verwenden. Die Java-

Umgebung benutzt es namlich auf eine ganz spezielle

Weise.

Class Java unterscheidet zwischen Groß- und Kleinschrei-

bung und wird diesen Bezeichner daher nicht mit

dem Schlusselwort class in Verbindung bringen. Ein

menschlicher Leser konnte dadurch aber verwirrt wer-

den.

Zahlenkonstanten — Naturlich durfen in einem Java-Programm auch Zahlenvorkommen. Java kennt ganze oder reelle Zahlen. Wie Zahlen in einemProgramm genau aussehen durfen, beschreiben wir erst spater. Vorerst seigesagt, daß man beim Angeben von Zahlen eigentlich nicht allzuviel falschmachen kann.

Beispiel: Beispiele fur ganze Zahlen sind:

10, -30, +1043, 1334, 0123, 0xFF

Bei den letzten Zahlen des Beispiels ist eine Bemerkung angebracht

— wenn eine mehrstellige Zahl mit einer Null anfangt, faßt Java Sie

als Zahl in oktaler Darstellung auf. Wenn eine Zahl mit den Zeichen

0x beginnt, faßt Java sie als hexadezimale Zahl auf. Die oktale Zahl

0123 entspricht der dezimalen Zahl 83, und die hexadezimale Zahl

0xFF entspricht der dezimalen Zahl 255. Spater gehen wir darauf

nochmal ein.

Beispiele fur reelle Zahlen sind:

3.141, 493., .5, -503, 120e-9, 140.5E120

Sie sehen, daß in Java als Dezimalpunkt tatsachlich ein Punkt und

nicht ein Komma verwendet wird. Das e bzw. das E in den letzten

beiden Zahlen steht fur “Exponent”. Die Zahl 120e−9 entspricht der

Zahl 120 · 10−9, und genauso steht die Zahl 140.5E120 fur die Zahl

120 · 10120. Ob Sie bei dieser Schreibweise lieber ein kleines e oder

ein großes E verwenden, ist Ihnen uberlassen — beide Schreibweisen

sind erlaubt und haben die gleiche Wirkung.

32

Page 4: 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berucksichtigt werden m¨ ¨ussen.

Zeichenketten — Eine Zeichenkette ist ein in doppelten Anfuhrungszeichenstehender Text. In der Zeichenkette ist jedes Zeichen erlaubt. Es gibt al-lerdings einige Zeichen, bei denen man sich etwas anstrengen muß, um Siein eine Zeichenkette aufzunehmen. Darauf wird spater noch eingegangen.

Beispiel: Hier ein paar Beispiele fur gultige Zeichenketten:

"Dies ist eine Zeichenkette"

"Sonderzeichen {}!#/-"

"class"

"510"

Die mittlere Zeichenkette enthalt den Text class. Da der Text in einer

Zeichenkette steht, hat er fur Java nichts mit dem Schlusselwort class

der Sprache Java zu tun.

Die letzte Zeichenkette enthalt den Text 510 . Auch hier gilt: Auf-

grund der Anfuhrungszeichen interpretiert Java dies nicht als die Zahl

510 sondern als Text.

Schließlich noch ein Beispiel fur eine ungultige Zeichenkette:

"Sein Name war "Hans". "

Das erste Anfuhrungszeichen beendet die Zeichenkette. Java liest dies

als Zeichenkette mit Inhalt “Sein Name war“ gefolgt vom Bezeichner

Hans gefolgt von der Zeichenkette “. ”. Auf diese Art kann man kei-

ne Zeichenkette erzeugen, die ein Anfuhrungszeichen enthalt. Spater

erfahren Sie, wie das geht.

Kommentare — schließlich konnen Sie in ein Java-Programm Kommentareaufnehmen. Kommentare dienen dazu, den Programmtext zu kommentie-ren. Dazu gehort insbesondere die Dokumentation der Klassen, ihrer At-tribute und ihrer Methoden. Alles, was in einem Kommentar steht, wirdvom Java-Compiler vollig ignoriert. Sie konnen in einen Kommentar alsobeliebige Texte schreiben.

Java unterscheidet mehrere Arten von Kommentaren. Ein einzeiliger Kom-mentar wird durch das Zeichen // eingeleitet. Wenn diese Zeichen in einerZeile (außerhalb einer Zeichenkette) stehen, ignoriert Java den gesamtenRest der Zeile. Unser kleines Beispielprogramm von vorhin konnten wirmit einzeiligen Kommentaren wie folgt dokumentieren:

class HalloWelt { // gebe den Text "Hallo, Welt" aus.

// diese Methode wird beim ausfuhren der Klasse ausgefuhrt:

public static void main( String[] args )

{

System.out.println("Hallo, Welt //");

}

}

Zu Demonstrationszwecken haben wir auch in die Zeichenkette "Hallo, Welt"

das Zeichen // eingefugt. An der Stelle bewirkt es keinen Kommentar, daes sich innerhalb einer Zeichenkette befindet.

33

Page 5: 5 Grundlagender Java-Syntax - TU · PDF file5 Grundlagender Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berucksichtigt werden m¨ ¨ussen.

Ein mehrzeiliger Kommentar wird durch /* begonnen und endet mit */.Alles zwischen /* und */ wird vom Compiler ignoriert. Unser Beispielkonnten wir auch so dokumentieren:

/*

* Die Klasse HalloWelt gibt auf dem Bildschirm den Text

* "Hallo, Welt" aus.

*/

class HalloWelt {

/***********************************************************

* diese Methode wird beim ausfuhren der Klasse ausgefuhrt:

*/

public static void main( String[] args )

{

System.out.println("Hallo, Welt //");

}

}

Schließlich noch ein Beispiel fur einen ungultigen Kommentar:

/* Ein Kommentar /* in einem Kommentar */ ist nicht erlaubt */

Es ist nicht moglich, einen durch /*...*/ begrenzten Kommentar zuschreiben, in welchem ein weiterer solcher Kommentar enthalten ist. DerCompiler wurde hier beim ersten */ denken, der Kommentar sei beendet.

Es ist jedoch moglich, das //-Zeichen innerhalb eines solchen Kommentarszu verwenden:

/* Ein einzeiliger Kommentar // in einem Kommentar ist erlaubt. */

Sie sollten Kommentare verwenden, um Ihr Programm verstandlicher zumachen. Zur Verstandlichkeit eines Programms gehort aber nicht nur dieFormulierung hilfreicher Kommentare sondern auch die Verwendung aus-sagekraftiger Bezeichner und das Einhalten einer gut lesbaren Programm-struktur. Wenn Sie aussagekraftige Bezeichner verwenden, konnen Sie sichso manchen Kommentar sparen.

5.2 Zusammenfassung

Nachdem Sie dies Kapitel gelesen haben, sollten Sie folgende Fragen beantwortenkonnen:

⊲ Welchen Zweck hat die Zeilenstruktur eines Programms ?

⊲ Wozu dient ein Semikolon in Java ?

⊲ Geben Sie Beispiele fur Bezeichner, die zwar erlaubt sind, aber den-noch nicht benutzt werden sollten !

⊲ Was ist eine Zeichenkette ?

34