CodeGym /Kurslar /Java SELF AZ /Java-da çoxseçimli operator: switch

Java-da çoxseçimli operator: switch

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Çoxseçimli operator — switch

Çoxseçimli operator – switch

Java-da, nənədən (C++ dili) miras qalan başqa bir maraqlı operator var. Bu, switch operatorudur. Buna çoxseçimli operator da deyilir. Formatı biraz böyük görünür:

switch(ifadə)
{
   case qiymət1: kod1;
   case qiymət2: kod2;
   case qiymət3: kod3;
}

Möhtərizələrin içində hansısa ifadə və ya dəyişən göstərilir. Əgər ifadənin qiyməti qiymət1 ilə bərabərdirsə, kod1 işləyir, əgər qiymət2 ilə bərabərdirsə, kod2 işləyir, əgər qiymət3 ilə bərabərdirsə, kod3 işləyir.

Nümunə:

Kod Ekrana Çıxış
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Aşağı");
   case 37: System.out.println("Normal");
   case 38: System.out.println("Yüksək");
} 
Yüksək

2. switch daxilində break operatoru

switch operatorunun mühüm xüsusiyyəti odur ki, proqram sadəcə olaraq lazımi sətirə (lazımi kod blokuna) keçir və sonra switch-in sonuna qədər olan bütün kod bloklarını yerinə yetirir. Yalnız switch-in daxilindəki dəyərə uyğun olan kod bloku deyil, switch-in sonuna qədər olan bütün kod blokları icra olunur.

Nümunə:

Kod Ekrana çıxış
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Aşağı");
   case 37: System.out.println("Normal");
   case 38: System.out.println("Yüksək");
} 
Aşağı
Normal
Yüksək

Temperaturun dəyəri 36 olanda, proqram switch daxilində ilk kod blokuna — birinci sətirə keçəcək və onun icrasından sonra sadəcə qalan kod bloklarını yerinə yetirəcək.

Əgər istəyirsiniz ki, hər bir halda proqram yalnız bir kod blokunu icra etsin, o bloku yerinə yetirdikdən sonra break operatorunu yazmağınız lazımdır;

Nümunə:

Kod Ekrana çıxış
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Aşağı");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yüksək");
}
Aşağı

switch daxilindəki sonuncu variant üçün break yazmağa ehtiyac yoxdur, çünki kod bloku artıq sondur.


3. Varsayılan davranış: default

Daha bir vacib məqam. Bəs təklif olunan hər hansı bir dəyər switch içində mötərizədə göstərilən ifadənin dəyəri ilə üst-üstə düşməsə, nə baş verəcək?

Əgər uyğun bir variant tapılmasa, switch operatorunun işi dayandırılacaq və proqram switch operatorunun fiqurlu mötərizələrindən sonra yazılmış kodu icra etməyə davam edəcək.

Ancaq switch-də, if-else içindəki else qolu ilə oxşar davranışı təmin etmək mümkündür. Bunun üçün default açar sözündən istifadə etmək lazımdır.

Əgər daxilindəki heç bir case variantı switch ifadəsinin dəyəri ilə üst-üstə düşməsə və switch-də default elan olunubsa, onun kodu icra ediləcək. Məsələn:

Kod Ekrana Çıxış
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Aşağı");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yüksək");
      break;
   default:
      System.out.println("Təcili yardım lazımdır");
}
Təcili yardım lazımdır

4. switch ilə if-else müqayisəsi

switch operatoru bir az if-else operatoruna bənzəyir, sadəcə onun daha kompleks variantıdır.

Həmişə switch kodunu bir neçə if şəklində yaza bilərsiniz. Məsələn:

switch ilə kod if-else ilə kod
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Aşağı");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yüksək");
      break;
   default:
      System.out.println("Təcili yardım lazımdır");
} 
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Aşağı");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("Yüksək");
}
else
{
   System.out.println("Təcili yardım lazımdır");
}

Soldakı kod sağdakı kodla tam olaraq eyni işləyəcək.

Bir neçə if-else zəncirini istifadə etmək daha yaxşıdır, əgər hər bir fakirədə, yəni if içərisində müxtəlif kompleks ifadələr varsa.



5. switch üçün parametr olaraq nə istifadə etmək olar?

Bütün tipləri switch operatorunun daxilində case üçün dəyər kimi istifadə etmək mümkün deyil. Hal-hazırda aşağıdakı tiplərin literallarını istifadə etmək olar:

  • tam ədəd tipləri: byte, short, int
  • char tipi
  • String tipi
  • istənilən enum tipinin dəyərləri

Başqa heç bir tip case daxilində dəyər kimi yazıla bilməz.

switch daxilində enum istifadəsi nümunəsi:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Bazar ertəsi");
      break;
   case TUESDAY:
      System.out.println("Çərşənbə axşamı");
      break;
   case WEDNESDAY:
      System.out.println("Çərşənbə");
      break;
   case THURSDAY:
      System.out.println("Cümə axşamı");
      break;
   case FRIDAY:
      System.out.println("Cümə");
      break;
   case SATURDAY:
      System.out.println("Şənbə");
      break;
   case SUNDAY:
      System.out.println("Bazar");
      break;
}

Qeyd. Əgər switch daxilində enum istifadə edirsinizsə, case içində hər dəyərdən əvvəl sinifin adını yazmağa ehtiyac yoxdur. Sadəcə dəyəri yazmaq kifayətdir.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION