Java Switch Case | Kurs Java

Java Switch Case

SWITCH CASE to instrukcja wielokrotnego wyboru, dzięki której można warunkowo wykonać pewne fragmenty kodu.

Jest to swego rodzaju rozszerzenie instrukcji IF ELSE. Jednak od pierwowzoru różni się przede wszystkim typem przyjmowanych argumentów wejściowych, możliwością wykonania kilku bloków kodu i samą czytelnością zapisu, ale o tym wszystkim za chwilę.

Switch Case

Switch nie jest typową instrukcją warunkową, a raczej swego rodzaju przełącznikiem. Przy jego pomocy można „przełączyć” wykonywanie kodu aplikacji na różne tory w zależności od zaistniałej sytuacji.

Przykład powyżej prezentuje możliwie prostą konstrukcję Switch z jednym warunkiem Case. Jeżeli argument wejściowy będzie równy jeden (1), zostanie wyświetlony napis „jeden”. W przeciwnym wypadku cały blok switch zostanie pominięty.

Warianty Case

W instrukcji Switch, w przeciwieństwie do If Else, nie określamy warunków, które muszą być spełnione, aby dany kod został wykonany. W przypadku tej instrukcji określamy wyrażenie wejściowe oraz warianty kodu, które mają być wykonane w zależności od jego wartości.

Poszczególne warianty oznaczamy słowem kluczowym case, po którym następuje wartość obsługiwanego argumentu wejściowego i fragment przypisanego kodu do wykonania.

Ilość poszczególnych warunków Case jest dowolna.

Wartość domyślna [default]

Instrukcja Switch daje również możliwość określenia opcjonalnego wariantu domyślnego, który zostanie wywołany, jeżeli argument wejściowy nie zostanie dopasowany do żadnego warunku case.

Wariant domyślny określamy słowem kluczowym default. Zazwyczaj taki warunek umieszcza się na samym końcu instrukcji switch, jednak nie jest to konieczne.

Punkt wejścia i przerwanie wariantu case [break]

Poszczególne warianty case nie muszą być całkowicie niezależnymi fragmentami kodu i wcale nie muszą się wykluczać. Powinny być raczej rozumiane jako początkowe punkty wejścia do instrukcji switch.

Jeżeli aplikacja wejdzie do jakiegoś warunku case, to będzie wykonywała kaskadowo wszystkie kolejne bloki kodu. Wykonywanie kolejnych bloków kończy się dopiero instrukcją break lub końcem całej instrukcji switch.

To właśnie dlatego kolejność poszczególnych bloków oraz odpowiednie umieszczenie instrukcji break ma zasadnicze znaczenie.

Powyższy przykład możemy rozbić na 3 sytuacje wg wartości zmiennej number:

  1. number == 1
    Zostanie wyświetlony napis ‚jeden’ oraz ‚dwa’ i dopiero wtedy zakończy się wykonanie kodu na instrukcji break;
  2. number == 2
    Zostanie wyświetlony tylko napis ‚dwa’;
  3. W każdym innym wypadku zostanie wyświetlony napis ‚default’;

Argument wejściowy

Java wymaga, aby wartości porównywane do zmiennej wejściowej (warunki case) były znane już podczas kompilacji. W praktyce oznacza to, że nie mogą tam pojawić się zmienne, czy metody zwracające wartość.

Porównywana zmienna musi być typu: byte, short, char, int, Enum lub String. Obsługiwane są również klasy osłonowe (Character, Byte, Short, Integer).

Wartości numeryczne

Jako wartości numeryczne rozumiany jest int oraz typy proste, które mogą być na niego zamienione: byte, short, char i ich klasy osłonowe.

Typ wyliczeniowy enum

Wyrażenie switch w Javie bardzo dobrze współgra z typem wyliczeniowym enum.

Jeżeli porównywana zmienna będzie pusta, otrzymamy wyjątek: java.lang.NullPointerException.

String

Java od wersji 7 dopuszcza również ciągi znaków (klasa String) jako argument wejściowy dla switch.

SWITCH vs IF ELSE

Kiedy wykorzystać Switch, a kiedy instrukcję If Else?

Nie ma jasno zdefiniowanych reguł o tym decydujących. Te dwie instrukcje są praktycznie wymienne i to czytelność kodu powinna zadecydować, z której z nich w danym momencie skorzystać.

Zazwyczaj dla prostych porównań lepiej sprawdza się instrukcja if, a dla bardziej rozbudowanych switch. W takich wypadkach nawet IDE podpowiada, by zamienić jedną konstrukcję na drugą.

Switch bardzo dobrze sprawdza się też w przypadku zmiennych typu enum.

Jeżeli jednak ilość warunków dalej się rozrasta, warto pomyśleć o przebudowaniu kodu, ponieważ przy dużej ilości warunków, niezależnie czy będzie to switch, czy if, kod będzie zwyczajnie nieczytelny.

Programista – Pytania rekrutacyjne

Lista pytań rekrutacyjnych, które pozwolą przygotować Ci się na rozmowę kwalifikacyjną.

No comments
Share:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *