switch, case, default - 1

"Hej, Amigo!"

"Hej Bilaabo! Så kul att se dig igen. Bara dina föreläsningar är så bra och begripliga. Inte som den här Java Memory Model."

"Ja, Bilaabo vet hur man väljer lektioner. Idag ska jag berätta om växlingsförklaringen."

"Jag tror att någon redan har berättat om det för mig."

"Det gjorde Ellie. Så, Amigo vill inte höra en lektion om växlingsförklaringen? Kanske börjar du lära ut din egen?"

"Nej, jag vill, jag vill. Låt oss höra om växlingsförklaringen."

"OK. I Java finns det något som kallas en switch-sats. Det är praktiskt när du behöver utföra vissa åtgärder beroende på olika värden för någon variabel."

Exempel med switch Motsvarande kod
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

Switch - satsen låter dig hoppa till önskad kodbit om variabeln som skickas till den matchar värdet som följer nyckelordet skiftläge.

Om i är 1, kommer exekveringen att hoppa till raden märkt «fall 1».

Om i är 2, kommer exekveringen att hoppa till raden märkt «fall 2».

Om i är 3, kommer exekveringen att hoppa till raden märkt «fall 3».

"Om det inte finns något hopp till något av fallen, exekveras "standard"-blocket."

"Jag förstår. Och till höger är samma logik, men implementerad med if-satser?"

"Japp."

"Och vad är det med ordet "paus"? Du sa att det bara kan användas i loopar?"

"Ja, och här. När break -satsen körs lämnar vi omedelbart switchen . "

"Men om break-satsen tas bort kommer alla rader inuti switchen att exekveras till slutet."

Exempel Utdata (för i = 1) Utdata (för i = 2)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
en
två
tre
många
två
tre
många

"Egentligen är case en etikett i koden. I switch-satsen hoppar vi till nästa etikett och börjar exekvera all kod till slutet av växlingen, eller tills vi möter en break-sats."

"Så, om vi inte skriver break, så kommer raden vi hoppar till att exekveras, följt av alla andra rader fram till avslutande klammerparentes. Stämmer det?"

"Ja."

"Piece of cake. Men jag gillar att använda if-påståenden bättre. De har inte dessa meningslösa brytpåståenden."

"Det är sant att om uttalanden ofta är mer kompakta. Men en switch-sats är ibland mer läsbar."

"Jämföra:"

Exempel med switch Motsvarande kod
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"Jag skulle inte säga att den är mer läsbar."

"Okej, men hur är det med det här exemplet?"

Exempel med switch Motsvarande kod
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"Bilaabo, ditt exempel ser inte helt rätt ut. Så jag kan utelämna break-satsen om jag använder retur?"

"Det stämmer. Ett returmeddelande kommer omedelbart att lämna metoden."

"Det verkar som att if-satser alltid är mer kompakta. Men switch-satsen visade sig vara mer läsbar den här gången."

"Fy, äntligen."

"En sak till. Du behöver inte skriva standard i slutet. Om du inte gör det händer helt enkelt ingenting om ingen av etiketterna matchar."

"Äh, precis. Som om-annat, men läsbart - mycket mer läsvärt!"

"Bra. Jag är glad att du gillade min lektion."

"Åh, jag glömde nästan. Till en början kunde man bara använda primitiva typer och enums i switch-satser. Men nu har de lagt till stöd för Strings."

"Du menar att jag skriver det här?"

Exempel
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"Japp. Bekvämt, eller hur?"

"Ja. Switch uttalanden är bra!"