1. A feleletválasztós operátor:switch
A Java-nak van egy másik érdekes operátora, amelyet a nagypapától (C++) örökölt. A nyilatkozatról beszélünk switch
. Nevezhetnénk feleletválasztós operátornak is. Kicsit nehézkesnek tűnik:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Egy kifejezés vagy változó a zárójelben van feltüntetve. Ha a kifejezés értéke value1
, akkor a Java gép megkezdi a végrehajtást code1
. Ha a kifejezés egyenlő a -val value2
, a végrehajtás a -ra ugrik code2
. Ha a kifejezés egyenlő -val value3
, akkor code3
végrehajtódik.
Példa:
Kód | Konzol kimenet |
---|---|
|
|
2. break
nyilatkozat beswitch
Az utasítások fontos jellemzője switch
, hogy a program egyszerűen a kívánt sorra ugrik (a szükséges kódblokkra), majd az összes kódblokkot végrehajtja a switch
. Nem csak az értéknek megfelelő kódblokk switch
, hanem az összes kódblokk a kód végéig switch
.
Példa:
Kód | Konzol kimenet |
---|---|
|
|
36-os hőmérséklet mellett a program beírja az switch
utasítást, átugrik és végrehajtja az első kódblokkot (az első eset), majd vidáman végrehajtja a többi kódblokkot.
Ha csak egy kódblokkot akar végrehajtani – az egyező esethez tartozó kódblokkot –, akkor a blokkot egy utasítással kell befejeznie break
;
Példa:
Kód | Konzol kimenet |
---|---|
|
|
break
Az utasítás utolsó esetben elhagyható switch
, mivel ez a blokk az utolsó break utasítással vagy anélkül.
3. Alapértelmezett művelet:default
Egy másik fontos szempont. Mi történik, ha a felsorolt esetek egyike sem egyezik switch
a zárójelben lévő kifejezéssel?
Ha nem található egyező eset, akkor az switch
utasítás többi része kimarad, és a program az switch
utasítást lezáró kapcsos zárójel után folytatja a végrehajtást.
Ennek ellenére azt is megteheti, hogy egy switch
nyilatkozat úgy viselkedik, mint egy nyilatkozatban az else ág if-else
. Ehhez használja a default
kulcsszót.
case
Ha a blokkban lévő s-ek egyike sem switch
egyezik a kifejezés értékével, és switch
van default
blokkja, akkor az alapértelmezett blokk kerül végrehajtásra. Példa:
Kód | Konzol kimenet |
---|---|
|
|
4. Összehasonlítása switch
ésif-else
Az switch
állítás némileg hasonlít egy if-else
állításhoz, csak bonyolultabb.
Egy utasítás kódját mindig átírhatja switch
több if
utasításként. Példa:
Kód kapcsolóval | Kódolja az if-else-t |
---|---|
|
|
A bal oldali kód pontosan ugyanúgy fog működni, mint a jobb oldali kód.
A több utasításból álló lánc if-else
előnyösebb, ha egy if
utasítás minden esetben különböző összetett kifejezéseket tartalmaz.
5. Milyen kifejezések használhatók egy switch
állításban?
Nem minden típus használható címkeként case
egy switch
utasításban. A következő típusú literálokat használhatja:
- egész típusok:
byte
,short
,int
,long
char
String
- bármilyen
enum
típusú
Nem használhat más típust tokcímkeként.
enum
Példa belső utasítás használatára switch
:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
enum
Megjegyzés: Ha belső utasítást használ switch
, akkor nem kell az osztálynevet a címkék minden értéke elé írnia case
. Elég csak az értéket felírni.
GO TO FULL VERSION