Java Reference
In-Depth Information
PrAXISTIPP:
Die Anweisungen bei einem
case
-Block können Sie zwar in
geschweite Klammern notieren, in der Praxis verzichtet man jedoch in der
Regel darauf.
Die Anweisung
break
, die am Ende jedes Blocks notiert ist, ist eine - in JavaScript
3
optio-
nale - Sprunganweisung. Damit stellen Sie sicher, dass nach einem Trefer die nachfolgend
notierten Fälle nicht ebenso ausgeführt werden. Bei dem
switch-case
-Konstrukt handelt es
sich um eine
Fall-Through-Anweisung
. Fehlt eine Sprunganweisung am Ende jedes Blocks,
werden ab einem Trefer
alle folgenden
Anweisungen ausgeführt, was in der Praxis ot
nicht gewünscht ist. Beim letzten Block in der
switch-case
-Anweisung ist das
break
immer
überlüssig.
HInWEIS:
In der Tat wird die
switch-case
-Anweisung fast immer in Verbin-
dung mit
break
erläutert und auch so eingesetzt. Ich persönlich bin aber der
Meinung, dass ein Hauptvorteil dieses Konstrukts gerade der „durchfallende“
Charakter ohne
break
ist. Dieses Verhalten kann man mit der
if-else
-Struktur
nur mit Mühe erreichen. Beachten Sie die nachfolgenden Beispiele, in denen wir
die
switch-case
-Anweisung sowohl mit als auch ohne
break
einsetzen.
Der Fall
default
ist dafür da, eine Standardreaktion für den Fall zu deinieren, dass keiner
der von Ihnen deinierten Fälle zutrit. Dieser Zweig ist optional und kann entfallen, wenn
es keinen Vorgabefall geben soll. Er entspricht dem
else
-Teil bei einer
if-else
-Konstruk-
tion.
HInWEIS:
Der gravierende Nachteil der Programmlusssteuerung über
switch
und
case
ist, dass nur
diskrete Fälle
unterschieden werden können. Also ist
nur der Vergleich auf
exakte Gleichheit
mit einem Wert möglich. Es gibt keinen
Vergleich auf größer oder kleiner, wie es bei einer
if-else
-Konstruktion mög-
lich ist.
Zu der
switch-case
-Anweisung sollten ein paar Bemerkungen über Besonderheiten nicht
fehlen:
1. Die Überprüfung des Testwerts erfolgt auf
Identität
. Das bedeutet, dass sowohl der Wert
als auch der Datentyp übereinstimmen müssen. Das ist deshalb bemerkenswert, weil in
JavaScript in fast allen anderen Fällen bei einem Vergleich nur die Wertgleichheit über-
prüt und bei unterschiedlichen Datentypen im Hintergrund automatisch gecastet wird.
Das ist hier explizit
nicht
der Fall.
2. Wenn Sie bei mehreren hintereinander angeordneten Fällen alle Anweisungen und ins-
besondere das
break
weglassen, können Sie eine Art diskreten
Wertebereich
für Trefer
angeben. Ganz ohne Anweisungen werden für alle diskreten Trefer die gleichen Anwei-
sungen ausgeführt, andernfalls immer ein Teil (ab dem Trefer).
3
In einigen anderen Sprachen ist sie bei dieser Konstruktion
nicht
optional.
Search WWH ::
Custom Search