przełącznik, sprawa, domyślnie - 1

"Cześć, Amigo!"

„Cześć, Bilaabo! Dobrze cię znowu widzieć. Tylko twoje wykłady są tak dobre i zrozumiałe. Nie tak jak ten model pamięci Java”.

„Tak, Bilaabo wie, jak wybierać lekcje. Dzisiaj opowiem ci o instrukcji zamiany”.

– Wydaje mi się, że ktoś już mi o tym powiedział.

„Ellie tak. Więc Amigo nie chce słuchać lekcji o instrukcji przełączania? Może zaczniesz uczyć się od siebie?”

„Nie, chcę, chcę. Posłuchajmy o instrukcji switch”.

„OK. W Javie istnieje coś takiego jak instrukcja switch. Jest wygodna, gdy trzeba wykonać określone czynności w zależności od różnych wartości jakiejś zmiennej”.

Przykład z przełącznikiem Równoważny 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");
}

Instrukcja switch umożliwia przejście do żądanego fragmentu kodu, jeśli przekazana do niego zmienna odpowiada wartości następującej po słowie kluczowym.

Jeśli i wynosi 1, wykonanie przeskoczy do linii oznaczonej «przypadek 1».

Jeśli i wynosi 2, wykonanie przeskoczy do linii oznaczonej «przypadek 2».

Jeśli i wynosi 3, wykonanie przeskoczy do linii oznaczonej «przypadek 3».

„Jeśli nie ma skoku do żadnego z przypadków, wówczas wykonywany jest blok «domyślny»”.

„Rozumiem. A po prawej jest ta sama logika, ale zaimplementowana przy użyciu instrukcji if?”

"Tak."

„A co jest ze słowem „przerwa”? Powiedziałeś, że można go używać tylko w pętlach?”

„Tak, i tutaj. Kiedy instrukcja break jest wykonywana, natychmiast wychodzimy z przełącznika ”.

„Ale jeśli instrukcja break zostanie usunięta, wszystkie wiersze wewnątrz przełącznika zostaną wykonane do końca”.

Przykład Wyjście (dla i = 1) Wyjście (dla 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"); }
jeden
dwa
trzy
wiele
dwa
trzy
dużo

„Właściwie wielkość liter jest etykietą w kodzie. W instrukcji switch przeskakujemy do następnej etykiety i zaczynamy wykonywać cały kod aż do końca przełącznika lub napotkania instrukcji break”.

„Więc, jeśli nie zapiszemy break, to wiersz, do którego przeskoczymy, zostanie wykonany, a następnie wszystkie pozostałe wiersze, aż do nawiasu zamykającego. Zgadza się?”

"Tak."

„Bułka z masłem. Ale bardziej lubię używać instrukcji if. Nie mają tych bezsensownych instrukcji break”.

„To prawda, że ​​instrukcje if są bardzo często bardziej zwięzłe. Ale instrukcja switch jest czasami bardziej czytelna”.

"Porównywać:"

Przykład z przełącznikiem Równoważny 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"
}

„Nie powiedziałbym, że jest bardziej czytelny”.

„Dobra, ale co z tym przykładem?”

Przykład z przełącznikiem Równoważny 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, twój przykład nie wygląda dobrze. Więc mogę pominąć instrukcję break, jeśli użyję return?”

„Zgadza się. Instrukcja return natychmiast zakończy działanie metody”.

„Wygląda na to, że instrukcje if są zawsze bardziej zwięzłe. Ale tym razem instrukcja switch okazała się bardziej czytelna”.

– Uff, w końcu.

„Jeszcze jedno. Nie musisz pisać domyślnego na końcu. Jeśli tego nie zrobisz, to po prostu nic się nie stanie, jeśli żadna z etykiet nie będzie pasować”.

„Uch, dokładnie. Jak gdyby, ale czytelne… o wiele bardziej czytelne!”

- Świetnie. Cieszę się, że podobała ci się moja lekcja.

„Och, prawie zapomniałem. Początkowo w instrukcjach przełączania można było używać tylko typów pierwotnych i wyliczeń. Ale teraz dodano obsługę łańcuchów”.

– Masz na myśli, że ja to piszę?

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

„Tak. Wygodnie, prawda?”

„Tak. Instrukcje przełączania są świetne!”