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
ключовата дума.
Ако нито един от case
s в 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
char
String
- вся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