Switch-satsen i Java: alternativ till if-satsen vid en flervalssituation


Nyckelord: switch-satsen, else-if satsen, villkorssats

if-satsen i programmering

Den avslutande artikeln i det här kapitlet om if-satsen kommer behandla switch-satsen (engelska: switch-statement) i Java. En switch-sats kan man använda istället för if-satsen när man har en flervalssituation. Switch-satsen utför en av flera kodblock, likt else-if satsen, beroende på vilken av dess så kallade case-satser som är uppfyllda.

Vad är switch-satsen i Java ?

Switch-satsen i Java gör det, likt if-satsen, möjligt att välja vilken operation/operationer som programmet ska utföra, beroende på vilket villkor som är uppfyllt. Helt enkelt, switch-satsen skapar möjligheter att utföra specifika kodblock beroende på vilket villkor som är uppfyllt.

Hur fungerar switch-satsen i Java?

En switch-sats kan beskrivas som en kompakt version av if-satsen och är effektiv att använda när man ska välja mellan ett specifikt antal operationer. Sammanfattningsvis så fungerar switch-satsen som så att:

  • Switch-satsen är ett alternativ till if-satsen när man har en flervalssituation.
  • Den innehåller en variabel eller uttryck som måste vara av en uppräkningsbar typ, t.ex heltal, char eller String.
  • Notera att vi inte kan använda oss av long, float, double eller boolean i switch uttrycket.

Om vi illustrerar switch-satsen med ett flödesschema får vi sambandet i figur 1 nedan.

Switch-satsen Java Else-if If-sats
Figur 1: Flödesschema som illustrerar switch-satsen i Java

Switch-satsen är ett alternativ till if-satsen när man har en flervalssituation.

Har skapar man en switch-sats i Java?

  • Switch-satsen skapar man genom att använda det reserverade ordet switch följt av ett uttryck inom parantes ( ).
  • Sedan specificeras alla alternativ med det reserverade ordet case följt av vilka operationer som programmet ska utföra om case-satsen har samma värde som uttrycket i switch-satsen.
  • En case-sats avslutar man med det reserverade ordet break.
  • Avslutningsvis, en switch-sats avslutas med ett default-uttryck, som skapas med det reserverade ordet default, det vill säga vad som ska ske om ingen av case-satserna är uppfyllda. Default-satsen kan, som du säkert inser, jämföras med else-satsen som vi såg på föregående sidor.

Syntax: Deklarera en switch-sats i Java

Om vi använder oss av punkterna vi såg ovan och skriver in det i kodeditorn får vi

switch (uttryck){

   case 1:
      // Operation / Flera operationer ... 
      break;
   
   case 2:
      // Operation / Flera operationer ... 
      break;

   case 3:
      // Operation / Flera operationer ... 
      break;
   .
   .
   .
   default:
      // Operation / Flera operationer ... 
      break;
}

Vad är det för skillnader mellan switch-satsen och else-if satsen i Java?

Förutom de uppenbara skillnaderna i hur vi deklarerar de båda så är skillnaderna dem emellan inte allt för stora. Både switch-satsen och else-if satsen fyller samma funktioner. Det finns de som hävdar att en switch-sats ger en mer elegant och kompakt kod, men det är självklart en smaksak. Vidare, det finns även indikationer på att en switch-sats är snabbare vid exekvering än else-if satsen. Om en switch-sats innehåller fler än fem objekt implementeras den med en lookup table eller en hash list. Detta innebär att alla objekt får samma åtkomsttid jämfört med en lista med if: s där det sista objektet tar mycket mer tid att nå eftersom det måste utvärdera varje tidigare tillstånd först. Det ska nämnas att det förmodligen inte kommer ha nämnvärd, om ens någon, påverkan på ditt programs prestanda vilken av switch-satsen och else-if satsen du väljer att använda.

Avslutningsvis, anpassa den lösning och använd de funktioner du känner dig mest bekväm med och som passar ditt program bäst. Det finns inget entydigt svar vilken av switch-satsen och else-if satsen som är bäst, utan det beror på flera faktorer som man får utvärdera från fall till fall.

Exempel: Switch-satsen i Java

Låt oss gå igenom ett par exempel på hur man skapar och använder en switch-sats i Java.

Exempel 1: Switch-sats jämfört med else-if sats för att konvertera skostorlek

Vi vill skriva ett program som givet en skostorlek för herrskor enligt US-storlek, skriver ut motsvarande storlek enligt EU-storlek. T.ex. US storlek 9 är samma som EU storlek 42. Vi tar inte med alla storlekar då det blir mycket att skriva, utan bara för att visa likheter/skillnader mellan en switch-sats och else-if satsen . Vill du se en tabell på motsvarande storlekar, hittar du det här: Shoe Size Conversion Chart

Switch-satsen

int usSize = 9;

switch (usSize){

   case 6:
      System.out.println("EU-storleken är: 39");
      break;

   case 7:
      System.out.println("EU-storleken är: 40");
      break;

   case 8:
      System.out.println("EU-storleken är: 41");
      break;

   case 9:
      System.out.println("EU-storleken är: 42");
      break;

   case 10:
      System.out.println("EU-storleken är: 43");
      break;

   case 11:
      System.out.println("EU-storleken är: 44");
      break;

   case 12:
      System.out.println("EU-storleken är: 45");
      break;

   default:
      System.out.println("Hittade inte storleken");
      break;
}

Else-if-satsen

int usSize = 9;

if(usSize == 6){
    System.out.println("EU-storleken är: 39");
}

else if(usSize == 7){
    System.out.println("EU-storleken är: 40");
}

else if(usSize == 8){
    System.out.println("EU-storleken är: 41");
}

else if(usSize == 9){
    System.out.println("EU-storleken är: 42");
}

else if(usSize == 10){
    System.out.println("EU-storleken är: 43");
}

else if(usSize == 11){
    System.out.println("EU-storleken är: 44");
}

else if(usSize == 12){
    System.out.println("EU-storleken är: 45");
}

else {
    System.out.println("Hittade inte storleken");
}

I båda fallen så får vi utskriften,  

EU-storleken är: 42

Vi ser i exemplet att switch-satsen och else-if satsen är väldigt lika varandra och vilken du väljer handlar mest om smak och tycke. Vidare, i exemplet ovan är variabeln usSize given, men en idé är att skriva ett program som frågar användaren om storleken och tar in informationen med t.ex. ett scanner-objekt, för att sedan köra programmet som konverterar från US-storlekar till EU-storlekar.

Exempel 2: Skapa en switch-sats som kontrollerar input från användaren

Vidare, låt oss ta ett ta ett till exempel som tar in information från användaren med hjälp av klassen scanner och sedan skriver ut en text.

// Importerar klassen Scanner
import java.util.Scanner;

public class exempel {
        public static void main(String[] args) {

            // Ber användaren skriv in info.
            System.out.println("Skriv den bokstav mellan a - d " +
                    "som du vill skriv ut i som versal" +
                    "Obs, endast små bokstäver");

            // Skapar ett scanner objekt
            Scanner sc = new Scanner(System.in);

            // Returnerar nästa tecken från scanner
            String userInput = sc.next();

            // Skapar switch-satsen
            switch (userInput){

            // Skapar olika case för switch-satsen
                case "a":
                    System.out.println("Användaren skrev in input: " 
                            + "A");
                    break;

                case "b":
                    System.out.println("Användaren skrev in input: " 
                            + "B");
                    break;

                case "c":
                    System.out.println("Användaren skrev in input: " 
                            + "C");
                    break;

                case "d":
                    System.out.println("Användaren skrev in input: "
                            + "D");
                    break;

            // Om användaren inte anger giltig input
                default:
                    System.out.println("Ej giltig input");
                    break;

            }
        }
}

Sammanfattning av switch-satsen i Java

En switch-sats i Java är en villkorssats som avgör ifall programmet ska utföra en operation, eller flera operationer.

  • En switch-sats är ett alternativ till if-satsen när man har en flervalssituation.
  • Villkorssatserna möjliggör att vi kan styra logiken i våra program.
  • En switch-sats kontrollerar ett uttryck som måste vara av en uppräkningsbar typ, t.ex heltal, char eller String. Man kan alltså inte kan använda sig av datatyperna long, float, double eller boolean i switch uttrycket.

Vanliga frågor och svar: Switch-satsen i Java

Hur ska man använda switch-satsen i Java?

Switch-satsen är ett alternativ till villkorssatserna (if-satsen, else-satsen och else-if satsen) när man har en flervalssituation.

Hur skapar man en switch-sats?

En switch-sats skapas med det reserverade ordet “switch” följt av det uttryck man vill kontrollera inom parantes. Sedan specificeras alla alternativ med det reserverade ordet “case” följt av vilka operationer som programmet ska utföra om case-satsen har samma värde som uttrycket i switch-satsen. Case-satsen avslutas med det reserverade ordet “break”. Avslutningsvis används kommandot “default” för att, likt else-satsen, utföra operationer om ingen av case-satserna är uppfyllda.

Är switch-satsen bättre än else-if satsen?

Både switch-satsen och else-if satsen fyller samma funktioner. Använd de funktioner du känner dig mest bekväm med och som passar ditt program bäst. Det finns inget entydigt svar vilken av switch-satsen och else-if satsen som är bäst, och skillnaderna dem emellan är förhållandevis små.

Feedback CodeBean

Hjälp oss göra Codebean bättre

Lämna gärna feedback med hjälp av stjärnorna nedan och hjälp oss att fortsätta göra sidan bättre.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!