1. Flervalsoperatören:switch
Java har en annan intressant operatör som den ärvt från sin farfar (C++). Vi pratar om switch
uttalandet. Vi skulle också kunna kalla det en flervalsoperatör. Det ser lite krångligt ut:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Ett uttryck eller en variabel anges inom parentes. Om uttryckets värde är value1
börjar Java-maskinen att köras code1
. Om uttrycket är lika med , value2
hoppar exekveringen till code2
. Om uttrycket är lika med exekveras value3
det .code3
Exempel:
Koda | Konsolutgång |
---|---|
|
|
2. break
uttalande iswitch
En viktig egenskap hos en switch
sats är att programmet helt enkelt hoppar till den önskade raden (till det önskade kodblocket) och sedan exekverar alla kodblock till slutet av switch
. Inte bara kodblocket som motsvarar värdet i , switch
utan alla kodblock till slutet av switch
.
Exempel:
Koda | Konsolutgång |
---|---|
|
|
Med en temperatur på 36 kommer programmet att gå in i switch
satsen, hoppa till och exekvera det första kodblocket (det första fallet), och sedan glatt utföra resten av kodblocken.
Om du bara vill exekvera ett kodblock - kodblocket som är associerat med det matchade fallet - måste du avsluta blocket med en break
sats;
Exempel:
Koda | Konsolutgång |
---|---|
|
|
Du kan utelämna det break
sista fallet i satsen switch
, eftersom det blocket är det sista med eller utan en break-sats.
3. Standardåtgärd:default
En annan viktig punkt. Vad händer om inget av fallen i listan switch
matchar uttrycket inom parentes?
Om ett matchande fall inte hittas, hoppas resten av satsen switch
över, och programmet kommer att fortsätta exekveringen efter det krulliga klammerparentesen som avslutar satsen switch
.
Som sagt, du kan också göra ett switch
uttalande som beter sig som den andra grenen i ett if-else
uttalande. För att göra detta, använd default
nyckelordet.
Om inget av case
s i switch
blocket matchar uttryckets värde och switch
har ett default
block, kommer standardblocket att exekveras. Exempel:
Koda | Konsolutgång |
---|---|
|
|
4. Jämföra switch
ochif-else
Påståendet switch
liknar något if-else
påstående, bara mer komplicerat.
Du kan alltid skriva om koden för en switch
sats som flera if
satser. Exempel:
Kod med strömbrytare | Koda med if-else |
---|---|
|
|
Koden till vänster kommer att fungera precis som koden till höger.
En kedja av flera if-else
satser är att föredra när en if
sats innehåller olika komplexa uttryck i varje separat fall.
5. Vilka uttryck kan användas i ett switch
påstående?
Alla typer kan inte användas som case
etiketter i ett switch
uttalande. Du kan använda bokstaver av följande typer:
- heltalstyper:
byte
,short
,int
,long
char
String
enum
vilken typ som helst
Du kan inte använda några andra typer som fodraletiketter.
Exempel på att använda ett enum
inuti ett switch
uttalande:
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;
}
Obs: Om du använder en enum
insida i en switch
sats behöver du inte skriva klassnamnet framför varje värde i etiketterna case
. Det räcker med att bara skriva värdet.
GO TO FULL VERSION