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 code3végrehajtódik.
Példa:
| Kód | Konzol kimenet |
|---|---|
|
|
2. breaknyilatkozat 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 switchutasí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 |
|---|---|
|
|
breakAz 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 switcha zárójelben lévő kifejezéssel?
Ha nem található egyező eset, akkor az switchutasítás többi része kimarad, és a program az switchutasítást lezáró kapcsos zárójel után folytatja a végrehajtást.
Ennek ellenére azt is megteheti, hogy egy switchnyilatkozat úgy viselkedik, mint egy nyilatkozatban az else ág if-else. Ehhez használja a defaultkulcsszót.
caseHa a blokkban lévő s-ek egyike sem switchegyezik a kifejezés értékével, és switchvan defaultblokkja, 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 switchtöbb ifutasí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-elseelőnyösebb, ha egy ifutasí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 caseegy switchutasításban. A következő típusú literálokat használhatja:
- egész típusok:
byte,short,int,long charString- bármilyen
enumtípusú
Nem használhat más típust tokcímkeként.
enumPé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;
}
enumMegjegyzé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