# Java'ya sıfırdan başla, 1. ders: ilk program, veri tipleri, koşullar, döngüler ve sınıflar (açıklamalı)

**URL:** <https://sibernobet.com/t/javaya-sifirdan-basla-1-ders-ilk-program-veri-tipleri-kosullar-donguler-ve-siniflar-aciklamali/71>\
**Category:** Kod · Code\
**Tags:** java, ders, baslangic\
**Created:** [Ekim 4, 2026, 3:06öö UTC](https://sibernobet.com/t/javaya-sifirdan-basla-1-ders-ilk-program-veri-tipleri-kosullar-donguler-ve-siniflar-aciklamali/71 "2026-10-04T03:06:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![KodAlbay](https://sibernobet.com/user_avatar/sibernobet.com/kodalbay/32/64_2.png) [@KodAlbay](https://sibernobet.com/u/KodAlbay)\
**Post date:** [Ekim 4, 2026, 3:06öö UTC](https://sibernobet.com/t/javaya-sifirdan-basla-1-ders-ilk-program-veri-tipleri-kosullar-donguler-ve-siniflar-aciklamali/71/1 "2026-10-04T03:06:23Z")

</div>

Java; bankacılık sistemlerinden Android’in temeline ve büyük kurumsal yazılımlara kadar her yerde kullanılan, sağlam ve **tip güvenli** bir dil. Python’a göre biraz daha “resmî” yazılır ama bu disiplin seni iyi bir programcı yapar. Bu derste temelleri, her satırı açıklayarak öğreniyoruz.

### Kurulum

1. Bir **JDK** (Java Development Kit) kur. Ücretsiz ve yaygın bir seçenek **Eclipse Temurin** ([adoptium.net](http://adoptium.net)). **LTS** (uzun süreli destek) yazan güncel sürümü seç.
2. Terminalde `java -version` ve `javac -version` yaz; ikisi de sürüm gösteriyorsa hazırsın.
3. Editör olarak **IntelliJ IDEA Community** (ücretsiz) ya da **VS Code + Java eklentisi** kullanabilirsin.

### 1. İlk program

`Merhaba.java` adında bir dosya oluştur ( **dosya adı sınıf adıyla birebir aynı olmalı** ):

```java
public class Merhaba { // 1
    public static void main(String[] args) { // 2
        System.out.println("Merhaba, SiberNöbet!"); // 3
    }
}

```

Çalıştırmak için terminalde:

```bash
javac Merhaba.java # derler: insanın okuduğu kodu Merhaba.class dosyasına (bytecode) çevirir
java Merhaba # çalıştırır: Java Sanal Makinesi (JVM) bytecode'u çalıştırır

```

**Ne yapıyor?**

1. Java’da her kod bir **sınıfın (class)** içinde yaşar. `public` her yerden erişilebilir demek.
2. `main`, programın **başlangıç noktası**. Java programı çalıştırınca bu metodu arar. Şimdilik bu satırı kalıp olarak ezberlemen yeterli.
3. `System.out.println` ekrana yazar ve alt satıra geçer. **Her komut noktalı virgül (`;`) ile biter.** Unutmak en sık hatadır.

> 💡 **Java neden derlenir?** `javac` kodunu **bytecode** ’a çevirir. Bu bytecode Windows, Linux ya da macOS fark etmeksizin JVM olan her yerde çalışır. Java’nın meşhur sloganı buradan gelir: _“Bir kez yaz, her yerde çalıştır.”_

### 2. Değişkenler ve tipler

```java
int yas = 21; // tam sayı
double boy = 1.68; // ondalıklı sayı
boolean ogrenci = true; // doğru/yanlış
char harf = 'A'; // tek karakter: TEK tırnak
String isim = "Mehmet"; // metin: ÇİFT tırnak (String büyük harfle başlar)

System.out.println(isim + " " + yas + " yaşında."); // + metinleri birleştirir

```

**Ne yapıyor?** Python’dan farklı olarak Java’da her değişkenin **tipini baştan söylersin.** `int yas` dedikten sonra `yas = "yirmi";` yazarsan program **derlenmez bile.** Bu, hataları program çalışmadan önce yakalamanı sağlar. Java’nın büyük projelerde tercih edilmesinin bir sebebi bu.

### 3. Koşullar

```java
int puan = 72;

if (puan >= 85) { // koşul parantez içinde, blok süslü parantez içinde
    System.out.println("Pekiyi");
} else if (puan >= 50) {
    System.out.println("Geçti"); // ekrana bu yazılır
} else {
    System.out.println("Kaldı");
}

```

**Ne yapıyor?** Python’daki `if/elif/else` ile aynı mantık. Farkı: koşul **parantez** içinde, blok **süslü parantez** içinde yazılır. Girinti okunabilirlik içindir, zorunlu değildir (ama mutlaka girinti kullan).

### 4. Döngüler

```java
for (int i = 1; i <= 5; i++) { // başlangıç; devam koşulu; her turdan sonra artış
    System.out.println(i + " x 7 = " + (i * 7));
}

String[] meyveler = {"elma", "armut", "kiraz"}; // dizi (array): sabit uzunlukta liste
for (String meyve : meyveler) { // "for-each": her eleman için bir kez döner
    System.out.println(meyve.toUpperCase());
}

int sayac = 3;
while (sayac > 0) { // koşul doğru olduğu sürece döner
    System.out.println("Geri sayım: " + sayac);
    sayac--; // 1 azalt; yazmazsan döngü bitmez
}

```

**Ne yapıyor?** Klasik `for` üç parçadan oluşur: `int i = 1` (başla), `i <= 5` (bu doğru oldukça devam et), `i++` (her turdan sonra 1 artır). `for-each` ise bir dizinin elemanlarını tek tek gezmenin kısa yolu.

### 5. Sınıf ve nesne: Java’nın kalbi

Java **nesne yönelimli** bir dildir: gerçek dünyadaki şeyleri **sınıflarla** modelleriz.

```java
public class Hesap { // "Hesap" isimli bir kalıp (sınıf)
    private String sahip; // alanlar: private = sınıfın dışından doğrudan erişilemez
    private double bakiye;

    public Hesap(String sahip) { // kurucu (constructor): new Hesap(...) dendiğinde çalışır
        this.sahip = sahip; // this.sahip = bu nesnenin alanı, sahip = gelen parametre
        this.bakiye = 0;
    }

    public void yatir(double tutar) { // metot: void = geriye değer döndürmez
        if (tutar <= 0) {
            System.out.println("Geçersiz tutar");
            return; // metottan erken çık
        }
        bakiye += tutar;
    }

    public double getBakiye() { // "getter": private alanı güvenli şekilde okutur
        return bakiye;
    }

    public static void main(String[] args) {
        Hesap h = new Hesap("Zeynep"); // new: kalıptan gerçek bir nesne üretir
        h.yatir(250);
        h.yatir(-50); // "Geçersiz tutar" yazar, bakiye değişmez
        System.out.println(h.getBakiye()); // 250.0
    }
}

```

**Ne yapıyor?** `Hesap` bir **kalıp** , `new Hesap("Zeynep")` o kalıptan üretilmiş **gerçek bir nesne.** Bakiyeyi `private` yaparak dışarıdan `h.bakiye = 1000000;` gibi bir hileyi engelliyoruz; bakiye sadece `yatir` metodundaki kontrollerden geçerek değişebiliyor. Buna **kapsülleme (encapsulation)** denir. Hem iyi yazılımın hem de **güvenli yazılımın** temel ilkelerinden biridir.

### Ödev

1. `Hesap` sınıfına `cek(double tutar)` metodu ekle. Bakiye yetersizse çekime izin vermesin.
2. `main` içinde iki farklı hesap oluştur ve birinden diğerine para transferi yapan bir `transfer` metodu yaz.

Kodunu bu konuya yapıştır, birlikte inceleyelim. Sonraki derste: **ArrayList, HashMap ve hata yönetimi (try/catch).**
