JavaRush /Kurslar /All lectures for UZ purposes /Java-da ko'p tanlovli operator: switch

Java-da ko'p tanlovli operator: switch

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Ko'p tanlovli operator — switch

Ko'p tanlovli operator – switch

Java-da yana bir qiziqarli operator bor, bu C++ dan meros qolgan. Bu switch operatori. Uni ko'p tanlovli operator deb ham atashadi. Shu tarzda ko'rinadi:

switch(ifoda)
{
   case qiymat1: kod1;
   case qiymat2: kod2;
   case qiymat3: kod3;
}

Ichidagi qavslar ichida biror ifoda yoki o'zgaruvchi ko'rsatiladi. Agar ifodaning qiymati qiymat1 ga teng bo'lsa, kod1 bajariladi, agar qiymat2 ga teng bo'lsa, kod2 bajariladi, agar qiymat3 ga teng bo'lsa, kod3 bajariladi.

Misol:

Kod Ekranga chiqish
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Past");
   case 37: System.out.println("Normal");
   case 38: System.out.println("Yuqori");
} 
Yuqori

2. break operatori switch ichida

switch ning muhim jihatlaridan biri shundaki, dastur kerakli qator (kerakli blok kod) ga sakraydi va keyin switch oxirigacha barcha kod bloklarini bajaradi. Faqat switch ichidagi qiymatga mos keladigan kod bloki emas, balki switch oxirigacha barcha kod bloklari bajariladi.

Misol:

Kod Ekranga chiqish
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Past");
   case 37: System.out.println("Normal");
   case 38: System.out.println("Yuqori");
} 
Past
Normal
Yuqori

Harorat 36 bo'lganda, dastur switch ichida birinchi kod blokiga o'tadi — birinchi qatorga, va uni bajarishini tugatib, boshqa kod bloklarini bajaradi.

Agar har bir misolda faqat bitta kod bloki bajarilishini istasangiz, unga sakralgan dasturning bajara olishini istasangiz, siz kod blokidan keyin break operatorini yozishingiz kerak.

Misol:

Kod Ekranga chiqish
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Past");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yuqori");
}
Past

switch ichidagi oxirgi misolda break yozmasa ham bo'ladi, chunki kod bloki oxirgi.


3. Default amallar: default

Yana muhim jihat. Agar switch ichidagi hech bir qiymat ifoda ichidagi qiymatga teng bo'lmasa, nima yuz beradi?

Agar mos keladigan variant topilmasa, switch operatori ishlashni to'xtatadi va dastur switch operatori qavslaridan keyin yozilgan kodni bajara boshlaydi.

Lekin switch ichida if-else ning else blokiga o'xshash holatni amalga oshirishingiz mumkin. Buning uchun default kalit so'zidan foydalanish kerak.

Agar hech bir case ichidagi variant switch ifodasi qiymati bilan mos kelmasa va switch ichida default e'lon qilingan bo'lsa, uning kodi bajariladi. Misol:

Kod Ekranga chiqish
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Past");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yuqori");
      break;
   default:
      System.out.println("Yordam kerak");
}
Yordam kerak

4. Taqqoslash: switch vs if-else

switch operatori qandaydir if-else operatoriga o'xshaydi, lekin u yanada murakkab varianti.

Siz har doim switch kodini bir necha if ga yozishingiz mumkin. Misol:

Kod switch bilan Kod if-else bilan
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Past");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("Yuqori");
      break;
   default:
      System.out.println("Yordam kerak");
} 
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Past");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("Yuqori");
}
else
{
   System.out.println("Yordam kerak");
}

Chapdagi kod o'ngdagi kod kabi ishlaydi.

Bir necha if-else ko'rinishidagi kodni ishlatish yaxshiroq, agar har bir if ichida turli xil murakkab ifodalar mavjud bo'lsa.



5. switch da parametri sifatida nima ishlatilishi mumkin?

Barcha turlarni switch operatori ichidagi case qiymatlari sifatida ishlatish mumkin emas. Hozirda quyidagi turdagi adabiyotlar ishlatilishi mumkin:

  • butun turlar: byte, short, int
  • tur char
  • tur String
  • har qanday enum turidagi qiymatlar

Hech qanday boshqa turlar case ichida qiymatlar sifatida yozish mumkin emas.

enum ning switch ichida ishlatilishi misoli:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Dushanba");
      break;
   case TUESDAY:
      System.out.println("Seshanba");
      break;
   case WEDNESDAY:
      System.out.println("Chorshanba");
      break;
   case THURSDAY:
      System.out.println("Payshanba");
      break;
   case FRIDAY:
      System.out.println("Juma");
      break;
   case SATURDAY:
      System.out.println("Shanba");
      break;
   case SUNDAY:
      System.out.println("Yakshanba");
      break;
}

Eslatma. Agar siz switch ichida enum ni ishlatsangiz, har bir qiymat oldida sinf nomini yozmaslik mumkin. Faqat qiymatni yozish kifoya.


Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION