- Karşılaştırma ve mantıksal operatörlerle koşul yazmak
if,else if,elseve üçlü operatörü kullanmak- Klasik
switchdeyimini modern switch ifadesinden ayırt etmek
Hava soğuksa mont giy, yağmur yağıyorsa şemsiye al. Her gün koşullara göre kararlar veririz. Programlar da aynısını yapar: ATM yalnızca PIN doğruysa para verir, bir oyun da canlar sıfıra düştüğünde biter. Bu derste bir Java programına karar vermeyi öğreteceksin.
Karşılaştırma ve mantıksal operatörler
Bir koşul her zaman boolean bir değer üretir: true ya da false. Koşulları karşılaştırma operatörleriyle kurar, birden fazla koşulu mantıksal operatörlerle birleştiririz.
| Operatör | Anlamı | Örnek | Sonuç |
|---|---|---|---|
== | eşittir | age == 15 | true |
!= | eşit değildir | age != 15 | false |
< > | küçüktür, büyüktür | age > 18 | false |
<= >= | küçük veya eşit, büyük veya eşit | age >= 12 | true |
&& | VE: iki koşul da doğru | age > 10 && age < 18 | true |
|| | VEYA: en az bir koşul doğru | age < 6 || age > 65 | false |
! | DEĞİL: sonucu tersine çevirir | !(age == 15) | false |
age = 15 alınmıştır.public class Main {
public static void main(String[] args) {
int age = 15;
boolean hasTicket = true;
System.out.println(age >= 12 && hasTicket);
System.out.println(age < 12 || !hasTicket);
System.out.println(age == 15);
System.out.println(age != 15);
if (hasTicket && age >= 12) {
System.out.println("Welcome to the film!");
} else {
System.out.println("Sorry, no entry.");
}
}
}true false true false Welcome to the film!
&&, bir VE (AND) kapısı gibi çalışır: çıkış yalnızca iki giriş de true (1) olduğunda true olur. Girişleri değiştir ve doğruluk tablosunu incele.if, else if ve else
if anahtar kelimesinden sonra parantez içinde bir koşul, süslü parantez içinde de koşul doğruysa çalışacak kod yazılır. else if sonraki koşulu kontrol eder, else ise hiçbir koşul sağlanmadığında çalışır. Java koşulları yukarıdan aşağıya kontrol eder ve ilk doğru koşulun bloğunu çalıştırır; diğerleri atlanır.
public class Main {
public static void main(String[] args) {
int score = 78;
if (score >= 90) {
System.out.println("Excellent");
} else if (score >= 70) {
System.out.println("Good");
} else if (score >= 50) {
System.out.println("Pass");
} else {
System.out.println("Fail");
}
String result = score >= 50 ? "passed" : "failed";
System.out.println("The test is " + result);
}
}Good The test is passed
78 hem 70'ten hem de 50'den büyüktür, ama yalnızca “Good” yazdırıldı; çünkü ilk doğru koşul score >= 70 idi. Son satırlarda üçlü operatör (ternary) kullanılmıştır: koşul ? A : B. Koşul doğruysa ifadenin değeri A, değilse B olur. İki değerden birini seçmen gerektiğinde kısa bir if/else gibi çalışır.
Klasik switch
Bir değişkeni birçok belirli değerle karşılaştırman gerektiğinde uzun bir if/else if zinciri yerine switch yazabilirsin. switch; int, char, String ve enum değerleriyle çalışır. Klasik biçimde her case bir break ile bitmelidir; aksi hâlde çalışma bir sonraki case'e “düşer” (fall-through):
public class Main {
public static void main(String[] args) {
int level = 2;
switch (level) {
case 1:
System.out.println("Easy");
case 2:
System.out.println("Medium");
case 3:
System.out.println("Hard");
break;
default:
System.out.println("Unknown level");
}
}
}Medium Hard
level 2 olduğu için çalışma case 2'den başlar. case 2'de break olmadığından program case 3'e geçer ve “Hard” kelimesini de yazdırır. switch'ten yalnızca break çıkarır. default bloğu ise hiçbir case eşleşmediğinde çalışır.
Switch ifadeleri
Java 14'ten beri switch bir ifade olarak da yazılabilir: bir değer üretir ve bu değer doğrudan bir değişkene atanabilir. Ok -> ile yazılan case'lerde düşme olmaz, break gerekmez ve bir case virgülle ayrılmış birkaç değer içerebilir. Bütün bir blok gerektiğinde değer yield ile döndürülür.
public class Main {
public static void main(String[] args) {
String day = "SAT";
String type = switch (day) {
case "SAT", "SUN" -> "weekend";
case "MON", "TUE", "WED", "THU", "FRI" -> "weekday";
default -> "unknown";
};
System.out.println(day + " is a " + type);
int month = 2;
int year = 2028;
int days = switch (month) {
case 4, 6, 9, 11 -> 30;
case 2 -> {
boolean leap = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
yield leap ? 29 : 28;
}
default -> 31;
};
System.out.println("Days in month " + month + ": " + days);
}
}SAT is a weekend Days in month 2: 29
Önemli noktalar
- Bir koşul
booleanüretir; karşılaştırmada==,!=,<,>,<=,>=kullanılır. &&(VE),||(VEYA) ve!(DEĞİL) koşulları birleştirir; Java sonucu değiştiremeyecek kısmı hesaplamaz.if / else if / elsezincirinde yalnızca ilk doğru koşulun bloğu çalışır.- Üçlü operatör
koşul ? A : Biki değerden birini seçer. - Klasik
switch'tebreakunutulursa çalışma bir sonrakicase'e geçer;->ile yazılan switch ifadesi ise bir değer döndürür ve düşme yapmaz.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
age = 15 iken age > 10 && age < 14 ifadesinin değeri nedir?