Nyckelord: switch-satsen, else-if satsen, villkorssats
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.
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.
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:
Om vi illustrerar switch-satsen med ett flödesschema får vi sambandet i figur 1 nedan.
Switch-satsen är ett alternativ till if-satsen när man har en flervalssituation.
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; }
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.
Låt oss gå igenom ett par exempel på hur man skapar och använder en switch-sats i Java.
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.
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; }
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.
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; } } }
En switch-sats i Java är en villkorssats som avgör ifall programmet ska utföra en operation, eller flera operationer.
Switch-satsen är ett alternativ till villkorssatserna (if-satsen, else-satsen och else-if satsen) när man har en flervalssituation.
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.
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å.
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!