1. De meerkeuze-operator:switch
Java heeft nog een interessante operator die het heeft geërfd van zijn grootvader (C++). We hebben het over de switch
verklaring. We zouden het ook een meerkeuze-operator kunnen noemen. Het ziet er een beetje omslachtig uit:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Een uitdrukking of variabele wordt tussen haakjes aangegeven. Als de waarde van de expressie is value1
, begint de Java-machine met uitvoeren code1
. Als de uitdrukking gelijk is aan value2
, springt de uitvoering naar code2
. Als de uitdrukking gelijk is aan value3
, dan code3
wordt uitgevoerd.
Voorbeeld:
Code | Console-uitvoer |
---|---|
|
|
2. break
verklaring binnenswitch
Een belangrijk kenmerk van een switch
instructie is dat het programma gewoon naar de vereiste regel springt (naar het vereiste codeblok) en vervolgens alle codeblokken uitvoert tot het einde van het switch
. Niet alleen het codeblok dat overeenkomt met de waarde in de switch
, maar alle codeblokken tot het einde van de switch
.
Voorbeeld:
Code | Console-uitvoer |
---|---|
|
|
Gegeven een temperatuur van 36, zal het programma de switch
instructie invoeren, naar het eerste codeblok springen en het uitvoeren (het eerste geval), en dan opgewekt de rest van de codeblokken uitvoeren.
Als u slechts één codeblok wilt uitvoeren - het codeblok dat is gekoppeld aan het overeenkomende hoofdlettergebruik - dan moet u het blok beëindigen met een break
instructie;
Voorbeeld:
Code | Console-uitvoer |
---|---|
|
|
break
U kunt de in het laatste geval van de instructie weglaten switch
, aangezien dat blok de laatste is met of zonder break-instructie.
3. Standaardactie:default
Nog een belangrijk punt. Wat gebeurt er als geen van de in de lijst vermelde gevallen switch
overeenkomt met de uitdrukking tussen haakjes?
Als er geen overeenkomende naamval wordt gevonden, wordt de rest van de switch
instructie overgeslagen en gaat het programma door met uitvoeren nadat de accolade de switch
instructie beëindigt.
Dat gezegd hebbende, je kunt een switch
statement ook laten gedragen als de else-tak in een if-else
statement. Gebruik hiervoor het default
trefwoord.
Als geen van de case
s in het switch
blok overeenkomt met de waarde van de uitdrukking en het switch
een blok heeft default
, wordt het standaardblok uitgevoerd. Voorbeeld:
Code | Console-uitvoer |
---|---|
|
|
4. Vergelijken switch
enif-else
De switch
verklaring lijkt enigszins op een if-else
verklaring, alleen ingewikkelder.
U kunt de code van een statement altijd herschrijven switch
als meerdere if
statements. Voorbeeld:
Coderen met schakelaar | Codeer met if-else |
---|---|
|
|
De code aan de linkerkant werkt precies hetzelfde als de code aan de rechterkant.
Een keten van meerdere if-else
statements heeft de voorkeur wanneer een if
statement verschillende complexe uitdrukkingen bevat in elk afzonderlijk geval.
5. Welke uitdrukkingen kunnen in een switch
verklaring worden gebruikt?
case
Niet alle typen kunnen als labels in een verklaring worden gebruikt switch
. U kunt literalen van de volgende typen gebruiken:
- typen gehele getallen:
byte
,short
,int
,long
char
String
- elk
enum
type
U kunt geen andere typen als doosetiketten gebruiken.
Voorbeeld van het gebruik van een enum
inside switch
statement:
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;
}
Opmerking: als u een enum
inside- switch
statement gebruikt, hoeft u de klassenaam niet voor elke waarde in de case
labels te schrijven. Het is voldoende om alleen de waarde op te schrijven.