1. Multiple-choice operatoren:switch

Java har en anden interessant operatør, som den har arvet fra sin bedstefar (C++). Vi taler om switchudsagnet. Vi kunne også kalde det en multiple-choice-operatør. Det ser lidt besværligt ud:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

Et udtryk eller en variabel er angivet inden for parentes. Hvis værdien af ​​udtrykket er value1, begynder Java-maskinen at udføre code1. Hvis udtrykket er lig med value2, springer eksekveringen til code2. Hvis udtrykket er lig med value3, code3udføres det.

Eksempel:

Kode Konsoludgang
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
High

2. breakerklæring iswitch

Et vigtigt træk ved en switchsætning er, at programmet simpelthen hopper til den påkrævede linje (til den nødvendige kodeblok) og derefter udfører alle kodeblokkene indtil slutningen af switch​​. Ikke kun den kodeblok, der svarer til værdien i switch, men alle kodeblokkene indtil slutningen af switch​​.

Eksempel:

Kode Konsoludgang
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
Low
Normal
High

Givet en temperatur på 36, vil programmet indtaste switchsætningen, springe til og udføre den første kodeblok (det første tilfælde), og derefter muntert udføre resten af ​​kodeblokkene.

Hvis du kun vil udføre én kodeblok - kodeblokken, der er knyttet til det matchede tilfælde - så skal du afslutte blokken med en breaksætning;

Eksempel:

Kode Konsoludgang
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

Du kan udelade breaki det sidste tilfælde af sætningen switch, da den blok er den sidste med eller uden en break-sætning.


3. Standardhandling:default

Endnu en vigtig pointe. Hvad sker der, hvis ingen af ​​de tilfælde, der er anført i feltet, switchmatcher udtrykket i parentes?

Hvis der ikke findes et matchende tilfælde, springes resten af switch​​sætningen over, og programmet fortsætter eksekveringen efter den krøllede klammer, der afslutter sætningen switch.

Når det er sagt, kan du også lave en switcherklæring, der opfører sig som den anden gren i en if-elseerklæring. For at gøre dette skal du bruge defaultsøgeordet.

Hvis ingen af case​​s'erne i switchblokken matcher værdien af ​​udtrykket og switchhar en defaultblok, vil standardblokken blive udført. Eksempel:

Kode Konsoludgang
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. Sammenligning switchogif-else

switchUdsagnet minder lidt om et udsagn if-else, kun mere kompliceret.

Du kan altid omskrive koden for et switchudsagn som flere ifudsagn. Eksempel:

Kode med kontakt Kode med if-else
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

Koden til venstre vil fungere nøjagtigt det samme som koden til højre.

En kæde af flere if-elseudsagn er at foretrække, når et ifudsagn indeholder forskellige komplekse udtryk i hvert enkelt tilfælde.



5. Hvilke udtryk kan bruges i et switchudsagn?

Ikke alle typer kan bruges som caseetiketter i en switcherklæring. Du kan bruge bogstaver af følgende typer:

  • heltalstyper: byte, short, int,long
  • char
  • String
  • enhver enumtype

Du kan ikke bruge andre typer som sagsetiketter.

Eksempel på brug af et enuminde i et switchudsagn:

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;
}

Bemærk: Hvis du bruger en enuminde i en switchsætning, behøver du ikke skrive klassenavnet foran hver værdi i etiketterne case. Det er nok bare at skrive værdien.