Java’nin Temelleri
2026
Programlama dünyasında, bir uygulamanın her durumda aynı şekilde davranması genellikle yeterli değildir. Gerçek hayatta olduğu gibi, yazılımlar da farklı durumlara göre farklı tepkiler vermelidir. İşte bu noktada koşullu programlama devreye girer.
Koşullu programlama, program akışının belirli koşullara göre yönlendirilmesini sağlayan bir programlama paradigmasıdır. Bu sayede bir uygulama, kullanıcının girdilerine, sistem durumuna veya başka değişkenlere bağlı olarak farklı kod bloklarını çalıştırabilir.
Gerçek hayattan basit bir örnek düşünelim:
“Yağmur yağıyorsa şemsiye al, yağmıyorsa alma”
Bu basit karar verme süreci, koşullu programlamanın temel mantığını mükemmel bir şekilde yansıtır. Programlama dillerinde bu tür kararları if, else, switch gibi yapılarla kodlarız.
Algoritma geliştirme sürecinde karar yapıları, akış diyagramlarında eşkenar dörtgen (baklava dilimi) şeklinde gösterilir. Bu şekil, programın bir karar noktasına geldiğini ve bu noktada iki veya daha fazla yoldan birini seçeceğini belirtir.
Karar yapılarının temel bileşenleri:
Boolean Değer Kavramı
Koşul ifadelerinin temelinde boolean (mantıksal) değerler yatar. Boolean veri tipi, yalnızca iki değer alabilir: true (doğru) veya false (yanlış). Bu ikili değer sistemi, bilgisayarların temel çalışma mantığıyla doğrudan ilişkilidir.
Aşağıdaki örnekte, koşulsuz bir akış ile koşullu bir akış arasındaki farkı göreceksiniz:
## 5.3 Dosya: kosulsuz_akis.py
## 5.4 Açıklama: Koşulsuz ve koşullu program akışı karşılaştırması
## 5.5 Anahtar Kavramlar: koşullu programlama, boolean mantığı
## 5.6 Çıktı: Kullanıcı girişine göre farklı mesajlar
## 5.7 Koşulsuz akış - her zaman çalışır
print("Bu mesaj her zaman görüntülenir.")
## 5.8 Koşullu akış - sadece belirli durumda çalışır
yemek_yer misiniz = input("Yemek yediniz mi? (e/h): ")
if yemek_yer misiniz == "h":
print("Hadi yemek yiyelim!")PEDAGOJİK NOT: Koşullu programlama, programlama öğrenme sürecinde atlanmaması gereken kritik bir konudur. Bu yapıları iyi anlamadan daha karmaşık programlar geliştirmek neredeyse imkansızdır. Her gün kullandığınız uygulamalardaki “kullanıcı girişi”, “şifre kontrolü”, “yaş doğrulama” gibi özelliklerin tamamı koşullu programlama ile çalışır.
Karşılaştırma operatörleri, iki değeri birbiriyle karşılaştırmak için kullanılır ve sonuç olarak boolean (true veya false) değer üretir. Java’da kullanılan temel karşılaştırma operatörleri şunlardır:
| Operatör | Anlamı | Kullanım Örneği | Sonuç (a=5, b=10) |
|---|---|---|---|
== |
Eşitlik | a == b |
false |
!= |
Eşitsizlik | a != b |
true |
> |
Büyüktür | a > b |
false |
< |
Küçüktür | a < b |
true |
>= |
Büyük eşit | a >= b |
false |
<= |
Küçük eşit | a <= b |
true |
ÖNEMLİ UYARI: Java’da
=(tek eşittir) atama operatörü,==(çift eşittir) ise karşılaştırma operatörüdür. Bu iki operatörü karıştırmak, yeni başlayanların en sık yaptığı hatalardan biridir ve genellikle mantıksal hatalara yol açar.
Sayısal Değerlerle Karşılaştırma:
Sayısal veri tipleri (int, double, float, long, etc.) ile karşılaştırma operatörleri doğrudan kullanılabilir:
int yas = 25;
double ortalama = 3.5;
long nufus = 85000000L;
boolean yetiskinMi = yas >= 18; // true
boolean gecerliNot = ortalama > 2.0; // true
boolean buyukSehir = nufus > 10000000; // trueString (Metin) Karşılaştırmaları:
String karşılaştırmalarında dikkatli olmak gerekir. Java’da String’ler nesne olduğu için == operatörü referans karşılaştırması yapar. Metinlerin içeriğini karşılaştırmak için equals() metodu kullanılmalıdır:
String isim1 = "Ahmet";
String isim2 = "Ahmet";
String isim3 = new String("Ahmet");
System.out.println(isim1 == isim2); // true (aynı referans)
System.out.println(isim1 == isim3); // false (farklı referans)
System.out.println(isim1.equals(isim3)); // true (içerik aynı)Farklı Veri Tiplerinde Karşılaştırma Davranışları:
Java’da farklı veri tipleri arasında karşılaştırma yaparken otomatik tür dönüşümü (type promotion) gerçekleşebilir:
int sayi = 10;
double ondalikliSayi = 10.0;
System.out.println(sayi == ondalikliSayi); // true (int -> double dönüşümü)// Dosya: KarsilastirmaOperatorleri.java
// Açıklama: Tüm karşılaştırma operatörlerinin kullanımı
// Anahtar Kavramlar: karşılaştırma, boolean, operatörler
// Çıktı: Her operatör için true/false sonuçları
public class KarsilastirmaOperatorleri {
public static void main(String[] args) {
int yas = 18;
// Eşitlik ve eşitsizlik
System.out.println("Yaş 18'e eşit mi? " + (yas == 18)); // true
System.out.println("Yaş 20'den farklı mı? " + (yas != 20)); // true
// Büyüklük ve küçüklük
System.out.println("Yaş 15'ten büyük mü? " + (yas > 15)); // true
System.out.println("Yaş 20'den küçük mü? " + (yas < 20)); // true
// Büyük eşit ve küçük eşit
System.out.println("Yaş 18'den büyük veya eşit mi? " + (yas >= 18)); // true
System.out.println("Yaş 17'den küçük veya eşit mi? " + (yas <= 17)); // false
}
}Çıktı:
Yaş 18'e eşit mi? true
Yaş 20'den farklı mı? true
Yaş 15'ten büyük mü? true
Yaş 20'den küçük mü? true
Yaş 18'den büyük veya eşit mi? true
Yaş 17'den küçük veya eşit mi? false
// Dosya: KullaniciGirisiKarsilastirma.java
// Açıklama: Kullanıcıdan alınan değerleri karşılaştırma
// Anahtar Kavramlar: kullanıcı girişi, Scanner, karşılaştırma
// Girdi: Kullanıcı yaşı
// Çıktı: Yetişkinlik durumu
import java.util.Scanner;
public class KullaniciGirisiKarsilastirma {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Yaşınızı girin: ");
int kullaniciYas = input.nextInt();
int yetiskinSiniri = 18;
boolean yetiskinMi = kullaniciYas >= yetiskinSiniri;
System.out.println("Yetişkin misiniz? " + yetiskinMi);
input.close();
}
}Örnek Çalışma:
Yaşınızı girin: 25
Yetişkin misiniz? true
PEDAGOJİK NOT: Karşılaştırma operatörleri, koşullu programlamanın temel yapı taşlarıdır. Bu operatörleri iyi kavramadan
if-elseyapılarını etkili bir şekilde kullanmak mümkün değildir. Özellikle==ve=karışıklığına dikkat edin ve String karşılaştırmalarındaequals()kullanmayı unutmayın.
if yapısı, Java’da karar verme mekanizmalarının en temel ve en sık kullanılan bileşenidir. Belirli bir koşul sağlandığında belirli bir kod bloğunun çalıştırılmasını sağlar.
Sözdizimi:
if (koşul) {
// Koşul doğru olduğunda çalışacak kod
}Girintileme (Indentation) Kuralları:
Java’da girintileme zorunlu olmasa da (Python’dan farklı olarak), kodun okunabilirliği için kritik öneme sahiptir. Standart olarak 4 boşluk veya bir tab kullanılır.
// İyi girintileme
if (koşul) {
System.out.println("Koşul sağlandı");
System.out.println("Bu da çalışır");
}
// Kötü girintileme
if (koşul) {
System.out.println("Okunması zor");
System.out.println("Tutarsız girintileme");
}Tek Koşullu Karar Yapısı:
En basit haliyle if yapısı, tek bir koşulu kontrol eder ve koşul doğruysa kod bloğunu çalıştırır:
int not = 85;
if (not >= 60) {
System.out.println("Tebrikler, geçtiniz!");
}if-else yapısı, koşulun iki olası sonucu için de kod tanımlamamızı sağlar. Koşul doğruysa if bloğu, yanlışsa else bloğu çalışır.
Sözdizimi:
if (koşul) {
// Koşul doğru olduğunda çalışacak kod
} else {
// Koşul yanlış olduğunda çalışacak kod
}İki Yönlü Karar Mekanizması:
int yas = 16;
if (yas >= 18) {
System.out.println("Oy kullanabilirsiniz.");
} else {
System.out.println("Oy kullanamazsınız. " + (18 - yas) + " yıl beklemeniz gerekiyor.");
}// Dosya: IfElseOrnegi.java
// Açıklama: if-else yapısı ile sınav notu değerlendirme
// Anahtar Kavramlar: if, else, karar yapıları
// Girdi: Sınav notu (sabit)
// Çıktı: Geçme/kalma durumu
public class IfElseOrnegi {
public static void main(String[] args) {
int not = 75;
if (not >= 60) {
System.out.println("Geçtiniz!");
System.out.println("Notunuz: " + not);
} else {
System.out.println("Kaldınız!");
System.out.println("Bir sonraki sınavda başarılar.");
}
System.out.println("Program sonlandı.");
}
}Çıktı:
Geçtiniz!
Notunuz: 75
Program sonlandı.
Bazen bir koşulun sonucuna bağlı olarak başka koşulları kontrol etmek gerekebilir. Bu durumda if blokları iç içe kullanılır.
Sözdizimi:
if (dışKoşul) {
if (içKoşul1) {
// Her iki koşul da doğru
} else {
// Dış koşul doğru, iç koşul yanlış
}
} else {
// Dış koşul yanlış
}Dikkat Edilmesi Gerekenler:
if için mutlaka parantez kullanın```java // Dosya: KullaniciDogrulama.java // Açıklama: İç içe if yapıları ile kullanıcı doğrulama sistemi // Anahtar Kavramlar: iç içe if, kullanıcı girişi, doğrulama // Girdi: Kullanıcı adı ve şifre // Çıktı: Giriş durumu mesajı
import java.util.Scanner;
public class KullaniciD