превключвател, случай, по подразбиране - 1

„Здрасти, Амиго!“

„Здравей, Билаабо! Радвам се да те видя отново. Само лекциите ти са толкова добри и разбираеми. Не като този модел на паметта на Java.“

„Да, Билаабо знае How да избира уроци. Днес ще ви разкажа за изявлението за превключване.“

— Мисля, че някой вече ми каза за това.

„Ели го направи. Значи Амиго не иска да чуе урок за командата switch? Може би ще започнеш да преподаваш своя собствена?“

„Не, искам, искам. Да чуем за изявлението за превключване.“

"ОК. В Java има нещо, наречено команда за превключване. Удобно е, когато трябва да извършите определени действия в зависимост от различни стойности на няHowва променлива."

Пример с превключвател Еквивалентен code
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 ви позволява да преминете към желаната част от codeа, ако променливата, подадена към нея, съвпада със стойността, която следва регистъра на ключовите думи.

Ако i е 1, тогава изпълнението ще премине към реда, отбелязан с «case 1».

Ако i е 2, тогава изпълнението ще премине към реда, отбелязан с «случай 2».

Ако i е 3, тогава изпълнението ще премине към реда, отбелязан с «case 3».

„Ако няма прескачане към нито един от случаите, тогава се изпълнява блокът „по подразбиране“.“

„Разбирам. И отдясно е същата логика, но реализирана с помощта на оператори if?“

— Да.

"И Howво е с думата "прекъсване"? Казахте, че може да се използва само в цикли?"

„Да, и тук. Когато командата break се изпълни, ние незабавно излизаме от превключвателя .“

„Но ако операторът break бъде премахнат, тогава всички редове вътре в превключвателя ще бъдат изпълнени до края.“

Пример Изход (за i = 1) Изход (за 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"); }
едно
две
три
много
две
три
много

„Всъщност регистърът е етикет в codeа. В оператора за превключване ние прескачаме до следващия етикет и започваме да изпълняваме целия code до края на превключването or докато не срещнем оператор за прекъсване.“

„Така че, ако не напишем прекъсване, тогава редът, към който прескачаме, ще бъде изпълнен, последван от всички останали редове до затварящата скоба. Така ли е?“

— Да.

"Парче торта. Но аз обичам да използвам оператори if повече. Те нямат тези безсмислени изрази за прекъсване."

„Вярно е, че операторите if много често са по-компактни. Но операторът switch понякога е по-четлив.“

"Сравнете:"

Пример с превключвател Еквивалентен code
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"
}

„Не бих казал, че е по-четлив.

„Добре, но Howво ще кажете за този пример?“

Пример с превключвател Еквивалентен code
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, твоят пример не изглежда съвсем правилен. Значи мога да пропусна оператора break, ако използвам return?“

„Точно така. Инструкция за връщане незабавно ще излезе от метода.“

„Изглежда, че инструкциите if винаги са по-компактни. Но този път операторът switch се оказа по-четлив.“

— Уф, най-после.

„Още нещо. Не е нужно да пишете default в края. Ако не го направите, просто нищо няма да се случи, ако нито един от етикетите не съвпада.“

„Ъъъ, точно така. Подобно на if-else, но четливо – много по-четливо!“

"Страхотно. Радвам се, че ти хареса урокът ми."

„О, почти забравих. Първоначално можехте да използвате само примитивни типове и преброявания в операторите switch. Но сега те добавиха поддръжка за низове.“

— Искаш да кажеш, че аз пиша това?

Пример
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

„Да. Удобно, нали?“

„Да. Изявленията за превключване са страхотни!“