Günlük hayatımızda sürekli olarak belirli koşullara göre kararlar alırız. Örneğin, “Hava yağmurluysa şemsiye al, değilse alma” gibi. Benzer şekilde, bir bilgisayar programının da karmaşık problemleri çözebilmesi ve akıllıca davranabilmesi için karşılaştığı durumlara (koşullara) göre farklı kod yollarını izlemesi gerekir. Java programlama dilinde, programın çalışma akışını belirli koşulların doğru (true) veya yanlış (false) olmasına göre yönlendiren bu yapılara denetim deyimleri (control statements) adı verilir.
Java’da programın karar vermesini sağlayan iki temel seçim (koşul) deyimi vardır: if ve switch. Bu rehberde, ilk defa kod yazacak biri için bu kavramları temelden alıp bol örneklerle inceleyeceğiz.
1. Temel if Deyimi
if deyimi, Java’daki en temel karar verme ve dallanma yapısıdır. Bir koşulun doğru olup olmadığını denetler. Eğer belirtilen koşul mantıksal olarak doğruysa (true), if bloğunun içindeki kodlar çalıştırılır; yanlışsa (false), bu kodlar tamamen atlanarak program bir sonraki adımdan devam eder.
Sözdizimi Kuralı:
if (koşul ifadesi) {
// Koşul doğru (true) ise işletilecek kod kesimi
}
Buradaki “koşul ifadesi” mutlaka bir boolean (doğru/yanlış) sonuç üretmelidir.
Örnek:
int a = 10;
int b = 5;
System.out.println("Denetimden önceki kod");
if (a > b) {
System.out.println("a, b'den büyüktür.");
}
System.out.println("Denetimden sonraki kod");
Bu örnekte, a > b koşulu 10 > 5 olduğu için doğrudur (true) ve ekrana “a, b’den büyüktür.” yazısı basılır. Eğer a‘nın değeri 3 olsaydı, koşul yanlış (false) olacak ve süslü parantezler { } arasındaki işlem atlanacaktı. Her ne kadar if bloğu tek satırlık bir kod içerdiğinde süslü parantez kullanmak zorunlu olmasa da, dalgınlıkla yapılabilecek hataların önüne geçmek ve kodun okunabilirliğini artırmak için her zaman { } parantezlerini kullanmak çok iyi bir programlama alışkanlığıdır.
2. if-else Deyimi: Bir Alternatif Sunmak
Sadece bir koşulun doğruluğuna bakmak her zaman yeterli olmaz. Çoğu zaman “Koşul doğruysa şunu yap, değilse bunu yap” demek isteriz. İşte bu noktada devreye else (değilse) deyimi girer.
Bir if-else yapısında, iki seçenekten sadece biri ve kesinlikle biri çalıştırılır. Her ikisinin birden çalışması imkansızdır.
Örnek:
int a = 3;
int b = 5;
if (a > b) {
System.out.println("a, b'den büyüktür.");
} else {
System.out.println("a, b'den büyük değildir.");
}
Burada 3 > 5 koşulu yanlış (false) olduğu için program otomatik olarak if kısmını atlar ve else bloğunun içindeki kodu çalıştırarak ekrana “a, b’den büyük değildir.” yazar. else bloğunun kullanılması zorunlu değildir, ancak program mantığında bir “B planı” gerektiğinde hayat kurtarır.
(İleri Düzey İpucu: İç içe if ifadeleri kullanırken, bir else deyimi her zaman kendisiyle aynı blokta bulunan ve henüz bir else ile eşleşmemiş olan en yakın if deyimi ile eşleşir. Kodlarınızı düzgün girintilemek ve süslü parantez kullanmak bu karışıklıkları (dangling else) önler.)
3. Çoklu Koşullar: if-else if Merdiveni
Gerçek dünyada kararlar her zaman iki seçenekli (siyah veya beyaz) değildir. Üç, dört veya daha fazla seçeneği değerlendirmemiz gereken durumlarda if-else if merdivenini kullanırız.
Bu yapıda, bilgisayar koşulları yukarıdan aşağıya doğru sırayla denetler. Hangi koşul ilk olarak doğru (true) çıkarsa, o bloğun içindeki kod çalıştırılır ve merdivenin geri kalan tüm adımları atlanır (bypassed). Eğer hiçbir koşul doğru değilse, en sonda bulunan else (varsayılan) bloğu çalışır.
Örnek: Sıcaklık Değerlendirmesi
int sicaklik = 75;
if (sicaklik < 50) {
System.out.println("Hava soğuk.");
} else if (sicaklik < 80) {
System.out.println("Hava güzel.");
} else {
System.out.println("Hava çok sıcak.");
}
Bu örnekte sicaklik 75’tir. Bilgisayar ilk olarak 75 < 50 koşulunu kontrol eder ve yanlış olduğunu görür. Ardından ikinci koşula 75 < 80 geçer. Bu koşul doğru (true) olduğu için ekrana “Hava güzel.” yazdırılır ve en sondaki else adımı hiç değerlendirilmeden atlanır. Eğer hiçbir koşul tutmasaydı, en sondaki else bloğu varsayılan olarak devreye girecekti.
4. switch Deyimi ile Çoklu Seçim
Çok sayıda koşulun birbiri ardına dizildiği durumlarda (örneğin haftanın günleri veya yılın ayları), uzun bir if-else if merdiveni yazmak kodun okunabilirliğini düşürür. Bu gibi durumlarda, bir ifadenin belirli sabit değerlere (literallere) eşitliğini kontrol eden switch deyimi, çok daha pratik ve temiz bir alternatif sunar. Üstelik arka planda çalışma mantığı farklı olduğu için, büyük veri grupları arasında seçim yaparken switch deyimi if-else yapısına göre çok daha hızlı ve verimli çalışabilir.
switch yapısı, parantez içine yazılan değerle case (durum) satırlarını eşleştirmeye çalışır. Eski Java sürümlerinde sadece tam sayılar (int, short, byte), char veya enum (numaralandırılmış) veri tiplerini desteklerken, Java 7 ve sonrasında String (metin) değerleri de switch ile kontrol edilebilmektedir.
Örnek: Ayları Tespit Etmek
int ay = 5;
switch (ay) {
case 1:
System.out.println("Ocak");
break;
case 2:
System.out.println("Şubat");
break;
case 3:
System.out.println("Mart");
break;
case 4:
System.out.println("Nisan");
break;
case 5:
System.out.println("Mayıs");
break;
default:
System.out.println("Geçersiz veya ele alınmayan ay");
}
Bu kodun çıktısı “Mayıs” olacaktır.
switch Yapısının Anahtar Bileşenleri:
caseSabitleri:switchparantezi içerisindeki değer, her bircase‘in yanındaki sabitle tek tek karşılaştırılır. Eşleşme bulunduğunda, o satırdan sonraki kodlar çalıştırılır. Hercasedeğeri benzersiz olmalıdır.breakDeyimi: Bircaseeşleştiğinde ve işlemleri bittiğinde, Java’nın diğercase‘leri de okumasını durdurupswitchbloğundan çıkmasını sağlar (“jumping out”). Eğerbreakyazmayı unutursanız, program bir sonrakicase‘in kodlarını da çalıştırarak “aşağı düşmeye” (fall-through) devam eder.defaultBloğu: Tıpkıif-else ifyapısının en sonundakielsebloğu gibi, eğer hiçbircasedeğeri eşleşmezse çalışacak olan varsayılan kısımdır. Kullanılması zorunlu değildir ancak beklenmeyen verilerle başa çıkmak için her zaman faydalıdır.
Sonuç
Java’da programların akıllı kararlar verebilmesi için koşul ifadelerini doğru kullanmak şarttır.
- Basit bir koşulu denetleyip bir aksiyon almak için
if; - İki farklı yoldan birini kesin olarak seçmek için
if-else; - Karmaşık ve sıralı kuralları test etmek için
if-else if; - Belirli bir değişkenin kesin değerlerine göre temiz ve performanslı bir okuma yapmak için
switch-caseyapısını tercih etmelisiniz.
Bu kodları kendi bilgisayarınızda (IDE) yazarak ve değerleri (örneğin ay veya sıcaklık değerini) değiştirerek denemeler yapmak, Java öğrenme serüveninizde temel mantığı oturtmanız açısından son derece yararlı olacaktır.





