Minter Coder Hack-Mack-Bi şeyler

10 Eylül

java java switch java switch statement java switch ifadeleri constant değerler

Bölüm 1.8: Java Statements (Switch Statement)

Selam Gençler;

Switch statementi de önceki derste değindiğimiz "if-else" yapısına çok benzer bu statementde de programın akışını değiştirmek için kullanırız ayrıca biz bir conditiondan birden fazla şartı sağlayabilmesini istiyorsak bu ifadeyi kullanıyoruz.

Switch statementinde desteklenen veri tipleri aşağıdaki gibidir :

  • int ve Integer
  • byte ve Byte
  • String
  • short ve Short
  • char ve Character
  • enum değerleri

Kısaca özetlemek istersek boolean ve long (Boolean ve Long) değerleri dışındaki değerleri kullanabiliriz.

Note : case statementleri bir sayı (literal), enum constant (enum sabiti) yada bir final constant variable (final sabit değişkeni) olmak zorundadır.

public class Main {
    public static void main(String[] args) {
        switch(Expression){
            case value1:
                // Eğer ki Expression value1'e eşitse burası çalışacaktır.
                break;
            case value2:
                // Eğer ki Expression value2'e eşitse burası çalışacaktır.
                break;
            ....
            default:
                // Eğer ki Expression value1,value2 yada diğer value'lere eşit değilse buraya girecektir.
        }
    }
}

Önceki dersteki if-else örneğimizi buraya taşıyalım.

public class Main {
    public static void main(String[] args) {
        int gun = 3;
        switch (gun) {
            case 1:
                System.out.println("P.tesi");
                break;
            case 2:
                System.out.println("Salı");
                break;
            case 3:
                System.out.println("Çarşamba");
                break;
            case 4:
                System.out.println("Perşembe");
                break;
            case 5:
                System.out.println("Cuma");
                break;
            case 6:
                System.out.println("Cumartesi");
                break;
            case 7:
                System.out.println("Pazar");
                break;
            default:
                System.out.println("Geçersiz gün.");
                break;
        }
    }
}

buradaki break ifadesi bizim artık ordan çıkmamız gerektiğini yani yukarıda görüldüğü üzere case yani durum 3 olursa eğer Çarşambaya girecek ve daha sonrasında switch bloğunu terkedecektir. Eğer ki biz break ifadelerini kaldırırsak case durumunun eşit olduğu yani 3.Çarşamba gününe gelecektir ve daha sonrasında o case durumundan çıkmayıp altındaki case'leri de ekrana yazacaktır...

public class Main {
    public static void main(String[] args) {
        int gun = 3;
        switch (gun) {
            case 1:
                System.out.println("P.tesi");
            case 2:
                System.out.println("Salı");
            case 3:
                System.out.println("Çarşamba");
            case 4:
                System.out.println("Perşembe");
            case 5:
                System.out.println("Cuma");
            case 6:
                System.out.println("Cumartesi");
            case 7:
                System.out.println("Pazar");
            default:
                System.out.println("Geçersiz gün.");
        }
    }
}

Çıktı aşağıdaki gibi olur : 

Çarşamba
Perşembe
Cuma
Cumartesi
Pazar
Geçersiz gün.

Ve son olarak bir güzel örneği de bırakıp bitirelim.

Unutmayın switch'de case kısımlarında sadece yukarıda yazdığımız gibi constantlar geçerlidir yani compile-time'de değerleri bilinenler.

private int getSortOrder(String firstName,final String lastName){
        String middleName = "Patricia";
        final String suffix = "JR";
        int id = 0;
        switch(firstName){
            case "test": return 5;
            case middleName: // DERLEMEZ çünkü middleName bir constant değil.
                id = 5;
                break;
            case suffix: // DERLER
                id=0;
                break;
            case lastName: // DERLEMEZ çünkü lastName constant değil.
                id = 8;
                break;
            case 5:    //DERLEMEZ TİP UYUMSUZLUĞU
            case 'J': // DERLEMEZ TİP UYUMSUZLUĞU
            case java.time.DayOfWeek.SUNDAY: // DERLEMEZ TİP UYUMSUZLUĞU
        }
    }