1. Ç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ış |
|---|---|
|
|
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ış |
|---|---|
|
|
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ış |
|---|---|
|
|
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ış |
|---|---|
|
|
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 |
|---|---|
|
|
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 chartipiStringtipi- istənilən
enumtipinin 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.
GO TO FULL VERSION