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
char
tipiString
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.
GO TO FULL VERSION