1. Flervalgsoperatøren:switch
Java har en annen interessant operatør som den har arvet fra sin bestefar (C++). Vi snakker om switch
uttalelsen. Vi kan også kalle det en flervalgsoperatør. Det ser litt tungvint ut:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Et uttrykk eller en variabel er angitt i parentesen. Hvis verdien av uttrykket er value1
, begynner Java-maskinen å kjøre code1
. Hvis uttrykket er lik value2
, hopper utførelse til code2
. Hvis uttrykket er lik value3
, code3
blir det utført.
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
2. break
uttalelse iswitch
Et viktig trekk ved en switch
setning er at programmet ganske enkelt hopper til den nødvendige linjen (til den nødvendige kodeblokken) og deretter kjører alle kodeblokkene til slutten av switch
. Ikke bare kodeblokken som tilsvarer verdien i switch
, men alle kodeblokkene til slutten av switch
.
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
Gitt en temperatur på 36, vil programmet gå inn i switch
setningen, hoppe til og utføre den første kodeblokken (det første tilfellet), og deretter muntert utføre resten av kodeblokkene.
Hvis du ønsker å kjøre bare én kodeblokk – kodeblokken som er knyttet til det matchede tilfellet – må du avslutte blokken med en break
setning;
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
Du kan utelate break
i det siste tilfellet av switch
setningen, siden den blokken er den siste med eller uten en break-setning.
3. Standardhandling:default
Et annet viktig poeng. Hva skjer hvis ingen av tilfellene som er oppført i feltet switch
samsvarer med uttrykket i parentes?
Hvis en samsvarende sak ikke blir funnet, hoppes resten av setningen switch
over, og programmet vil fortsette kjøringen etter at den krøllede klammeren avslutter setningen switch
.
Når det er sagt, kan du også lage en switch
uttalelse som oppfører seg som den andre grenen i en if-else
uttalelse. For å gjøre dette, bruk nøkkelordet default
.
Hvis ingen av case
s-ene i switch
blokken samsvarer med verdien til uttrykket og switch
har en default
blokk, vil standardblokken bli utført. Eksempel:
Kode | Konsollutgang |
---|---|
|
|
4. Sammenligning switch
ogif-else
Utsagnet switch
ligner litt på et if-else
utsagn, bare mer komplisert.
Du kan alltid skrive om koden til en switch
setning som flere if
setninger. Eksempel:
Kode med bryter | Kode med if-else |
---|---|
|
|
Koden til venstre vil fungere nøyaktig det samme som koden til høyre.
En kjede med flere if-else
setninger er å foretrekke når en if
setning inneholder ulike komplekse uttrykk i hvert enkelt tilfelle.
5. Hvilke uttrykk kan brukes i et switch
utsagn?
Ikke alle typer kan brukes som case
etiketter i en switch
uttalelse. Du kan bruke bokstaver av følgende typer:
- heltallstyper:
byte
,short
,int
,long
char
String
- hvilken som helst
enum
type
Du kan ikke bruke andre typer som saksetiketter.
Eksempel på bruk av en enum
inne i en switch
uttalelse:
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;
}
Merk: Hvis du bruker en enum
inne i en switch
setning, trenger du ikke skrive klassenavnet foran hver verdi i etikettene case
. Det er nok å bare skrive verdien.
GO TO FULL VERSION