1. Çoktan seçmeli operatör:switch

Java'nın büyükbabasından (C++) miras aldığı başka bir ilginç işleci vardır. açıklamadan bahsediyoruz switch. Buna çoktan seçmeli bir operatör de diyebiliriz. Biraz zahmetli görünüyor:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

Parantez içinde bir ifade veya değişken belirtilir. İfadenin değeri ise value1, Java makinesi çalışmaya başlar code1. İfade şuna eşitse value2yürütme atlar code2: . İfade eşittir ise value3, code3yürütülür.

Örnek:

kod Konsol çıkışı
int temperature = 38;

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

2. breakifadeswitch

Bir switchifadenin önemli bir özelliği, programın gerekli satıra (gerekli kod bloğuna) atlaması ve ardından switch. Yalnızca içindeki değere karşılık gelen kod bloğu değil switch, sonuna kadar tüm kod blokları switch.

Örnek:

kod Konsol çıkışı
int temperature = 36;

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

36'lık bir sıcaklık verildiğinde, program switchifadeye girecek, ilk kod bloğuna (ilk durum) atlayacak ve onu çalıştıracak ve ardından geri kalan kod bloklarını neşeyle yürütecektir.

Yalnızca bir kod bloğunu - eşleşen durumla ilişkili kod bloğunu - yürütmek istiyorsanız , bloğu bir breakifade ile bitirmeniz gerekir;

Örnek:

kod Konsol çıkışı
int temperature = 36;

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

Bu blok, break deyimi olan veya olmayan son blok olduğu için, deyimin son breakdurumunda atlayabilirsiniz .switch


3. Varsayılan eylem:default

Bir başka önemli nokta. switchParantez içindeki ifade ile listelenen durumlardan hiçbiri eşleşmezse ne olur ?

Eşleşen bir durum bulunamazsa, ifadenin geri kalanı switchatlanır ve program, ifadeyi sonlandıran kaşlı ayraçtan sonra yürütmeye devam eder switch.

switchBununla birlikte, bir ifadenin bir ifadedeki else dalı gibi davranmasını da sağlayabilirsiniz if-else. Bunu yapmak için defaultanahtar kelimeyi kullanın.

caseBloktaki s'lerden hiçbiri switchifadenin değeriyle eşleşmiyorsa ve switchbir defaultbloğa sahipse, varsayılan blok yürütülür. Örnek:

kod Konsol çıkışı
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. Karşılaştırma switchveif-else

İfade switch, bir ifadeye biraz benzer if-else, sadece daha karmaşıktır.

switchBir ifadenin kodunu her zaman çoklu ifadeler olarak yeniden yazabilirsiniz if. Örnek:

Anahtarlı kod if-else ile kodlayın
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

Soldaki kod, sağdaki kodla tamamen aynı şekilde çalışacaktır.

Bir ifade, her bir ayrı durumda çeşitli karmaşık ifadeler içerdiğinde, birden çok ifadeden oluşan bir zincir if-elsetercih edilir .if



5. Bir ifadede hangi ifadeler kullanılabilir switch?

caseBir ifadede tüm türler etiket olarak kullanılamaz switch. Aşağıdaki türlerdeki sabit değerleri kullanabilirsiniz:

  • tamsayı türleri: byte, short, int,long
  • char
  • String
  • herhangi bir enumtür

Diğer türleri kasa etiketleri olarak kullanamazsınız .

enumInside a ifadesinin kullanımına örnek switch:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}

enumNot: Bir deyimin içinde kullanırsanız switch, sınıf adını etiketlerdeki her değerin önüne yazmanız gerekmez case. Değeri yazmanız yeterlidir.