BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > Java Programlama > Switch kalıbı

Switch kalıbı

Switch kalıbı, byte, short, char ve int temel veri türleri ve String sınıfından değerler alabilen bir değişkenin aldığı değerlere göre çok seçenekli işlem seçeneği sağlar.

Switch kalıbı ile ilgili kod bloğu içinde bir veya daha fazla case seçeneği ve isteğe bağlı olarak tanımlanan default seçeneğinin yer alır ve { } işaretleri arasında tanımlanır:


switch(ifade) {
   case sabit1:
      işlem-satırı
      break;
   case sabit2:
      işlem-satırı;
      break;
      .
      .
      .
   default:
      işlem-satırı;
}

switch satırında yer alan ifade ile elde ettiğimiz değer mutlaka case terimlerinin bulunduğu satırlarda yer alan sabit değerlerle karşılaştırılabilecek bir değer olmalıdır. Buradaki ifade genellikle bir değişken değeri olmaktadır.

Program, switch deyiminin bulunduğu satırda yer alan ifadenin sonucu ile switch kalıbının case satırlarında yer alan sabit değerleri karşılaştırır.

Switch kalıbının ifadenin sonucu case satırlarında yer alan sabit değerlerin karşılaştırılmasında sadece eşit olup olmadığı kontrol edilir.

Burada bahsi geçen sabit değer byte, short, char ve int veya String sınıfından bir değerdir. İfade sonucu ile aynı değeri taşıyan sabit değerin yer aldığı case bölümüne bağlı işlem satırını veya satırlarını çalıştırır. break deyimini görür görmez, switch kalıbının dışına çıkar ve bir sonraki işlem satırından çalışmasına devam eder.

break deyimini, case yapıları içinde tanımlamak şart değildir. Değişken değeri ile aynı değeri taşıyan sabit değerin yer aldığı case bölümüne bağlı işlem satırı veya satırları çalıştığında, case yapısında bir break deyimi yer almaz ise, program hemen switch kalıbı dışına çıkmaz. Aksine, eğer aşağıda devam eden case yapıları varsa, herhangi bir koşul kontrolü yapmadan, bir sonraki case yapısındaki işlem satırlarını çalıştırır. Ancak, bütün case yapıları içinde break deyimini kullanırsanız, switch kalıbı içinde yer alan sadece tek bir case yapısına bağlı işlem satırı ya da satırları çalışır.

Koşul sağlanarak bir case yapısı içine girildiğinde çıkış ancak break deyimi ile ya da switch kalıbının sonuna gelmekle sağlanır.

case yapısı içinde break tanımı yapılmamışsa, herhangi bir koşul kontrolü yapmadan, bir sonraki case yapısındaki işlem satırları çalıştırılır.

Eğer, switch satırındaki değişken değeri case satırlarında yer alan sabit değerlerin herhangi biri ile aynı değeri taşımıyorsa, program default satırında yer alan işlem satırı veya satırlarını çalıştırır. default satırının tanımlanması tamamen isteğe bağlıdır. Yani, bu satır tanımlanmasa bile switch kalıbı normal olarak çalışır.

Program, switch kalıbı için tanımlanan değişken değeri ile aynı değeri taşıyan bir sabitin yer aldığı case satırı ile karşılaştığında, bir break ifadesi ile karşılaşana kadar o case satırında yer alan işlem satırlarının gereğini yerine getirir. Eğer son case satırı veya default satırı ile ilgili işlem satırlarının gereğini yerine getiriyorsa switch kalıbının sonuna geldiğinden işlemler otomatik olarak sona ermiş olur. Eğer, case satırlarında yer alan sabit değerlerinden hiçbiri değişken değeri ile aynı değilse ve switch kalıbı içinde default satırı tanımlanmamışsa, program switch kalıbında herhangi bir işlem yapmadan bir sonraki program işlem satırından çalışmasına devam eder.


public class javaprog {
  public static void main(String args[]){
    int id1 = 2;

    switch (id1) {
      case 0 :
        System.out.println("id1 değişken değeri 0");
        break;
      case 1 :
        System.out.println("id1 değişken değeri 1");
        break;
      case 2 :
        System.out.println("id1 değişken değeri 2");
        break;
      default :
        System.out.println("id1 değişken değeri 0, 1 veya 2 den farklıdır.");
    }    
  }
}

Yukarıdaki programı çalıştırdığınızda, ekran çıktısı aşağıdaki şekilde olacaktır:

C:\>javac javaprog.java
C:\>java -Dfile.encoding=Cp857 javaprog
id1 değişken değeri 2