1. Операторът с множествен избор:switch

Java има друг интересен оператор, който е наследил от своя дядо (C++). Говорим за switchизявлението. Можем да го наречем и оператор с множествен избор. Изглежда малко тромаво:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Израз or променлива е посочен в скобите. Ако стойността на израза е value1, Java машината започва да изпълнява code1. Ако изразът е equals на value2, изпълнението преминава към code2. Ако изразът е equals на value3, тогава code3се изпълнява.
Пример:
| Код | Конзолен изход |
|---|---|
|
|
2. breakизявление вswitch
Важна характеристика на switchоператора е, че програмата просто прескача до необходимия ред (до необходимия codeов блок) и след това изпълнява всички блокове code до края на switch. Не само блокът от code, съответстващ на стойността в switch, но всички блокове от code до края на switch.
Пример:
| Код | Конзолен изход |
|---|---|
|
|
При дадена температура от 36, програмата ще въведе switchоператора, ще премине към и ще изпълни първия блок code (първия случай) и след това весело ще изпълни останалите блокове code.
Ако искате да изпълните само един блок от code - блокът от code, свързан със съвпадащия регистър - тогава трябва да завършите блока с breakизраз;
Пример:
| Код | Конзолен изход |
|---|---|
|
|
Можете да пропуснете breakпоследния случай на switchоператора, тъй като този блок е последният със or без оператор за прекъсване.
3. Действие по подразбиране:default
Друг важен момент. Какво се случва, ако нито един от изброените случаи не съвпада switchс израза в скобите?
Ако не бъде намерен съвпадащ регистър, тогава останалата част от switchоператора се пропуска и програмата ще продължи изпълнението след фигурната скоба, завършваща оператора switch.
Въпреки това можете също така да накарате switchизявление да се държи като клона else в if-elseизявление. За да направите това, използвайте defaultключовата дума.
Ако нито един от cases в switchблока не съответства на стойността на израза и switchима defaultблок, ще бъде изпълнен блокът по подразбиране. Пример:
| Код | Конзолен изход |
|---|---|
|
|
4. Сравняване switchиif-else
Изявлението switchе донякъде подобно на if-elseизявление, само че е по-сложно.
Винаги можете да пренапишете codeа на дадено switchизявление като множество ifизявления. Пример:
| Код с превключвател | Кодирайте с if-else |
|---|---|
|
|
Кодът отляво ще работи точно Howто codeът отдясно.
Веригата от множество if-elseизрази е за предпочитане, когато даден ifоператор съдържа различни сложни изрази във всеки отделен случай.
5. Какви изрази могат да се използват в switchизявление?
Не всички типове могат да се използват като caseетикети в switchизявление. Можете да използвате литерали от следните типове:
- цели числа:
byte,short,int,long charString- всяHowъв
enumтип
Не можете да използвате други типове като етикети на случай.
Пример за използване на enumвътрешно 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вътрешен switchоператор, не е необходимо да пишете името на класа пред всяка стойност в етикетите case. Достатъчно е просто да напишете стойността.
GO TO FULL VERSION