2. Degiskenler ve Veri Tipleri

Java’nin Temelleri

Ismail Kirbas

2026

2. Degiskenler ve Veri Tipleri

title: "Java Programının Temel Yapısı, Değişkenler ve Veri Tipleri"
---
bölüm: Java Programının Temel Yapısı, Değişkenler ve Veri Tipleri
bölüm_numarası: 1
amaç: Java programının temel yapı taşlarını (class, main metodu, bloklar, yorum satırları ve çıktı komutları) kavramak ve değişkenler ile veri tiplerini tanımak.
öğrenme_hedefleri:
  - Java'da bir class yapısını tanımlayabilme ve main metodunu kullanabilme.
  - Kod bloklarının kapsamını (scope) anlayabilme.
  - Tek satırlı, çok satırlı ve Javadoc yorumlarını kullanabilme.
  - System.out.println(), print() ve printf() metotlarıyla konsola çıktı verebilme.
  - İlkel (primitive) ve referans (reference) veri tiplerini tanımlayabilme ve kullanabilme.
  - Basit bir Java programını hatasız yazıp çalıştırabilme.
önceki_bilgi: Temel bilgisayar kullanımı ve algoritma mantığı.
sonraki_bölüm: Operatörler ve İfadeler
# Bölüm 2:  Java Programının Temel Yapısı, Değişkenler ve Veri Tipleri

Java'ya hoş geldiniz! Bu bölümde, bir Java programının omurgasını oluşturan temel yapı taşlarını keşfedeceğiz. İlk programınızı yazmaktan, değişkenlerle veri depolamaya ve bu verileri konsola yazdırmaya kadar birçok temel kavramı adım adım öğreneceksiniz. Bu bölüm, sonraki tüm konuların temelini oluşturacağı için kavramları iyice anlamanız büyük önem taşır.

## 2.1 Java Programının Temel Bileşenleri

Her Java programı, belirli bir yapıya sahiptir. Bu yapıyı oluşturan temel bileşenler; class (sınıf) bildirimi, `main` metodu ve kod bloklarıdır. Bu yapıyı anlamak, Java ile yazılmış herhangi bir kodu okumak ve yazmak için ilk adımdır.

### Class Yapısı ve Tanımı

Java'da her şey sınıflar (class) etrafında döner. Bir sınıf, nesnelerin (object) oluşturulması için bir şablondur. Ancak şimdilik, bir Java programının temel kapsayıcısı olduğunu düşünebiliriz. Tüm kodunuz, bir sınıfın içinde yer alır.

Bir sınıfı tanımlamak için `class` anahtar kelimesi kullanılır. Sınıf isimleri, **PascalCase** olarak adlandırılan bir kurala göre yazılır: Her kelimenin ilk harfi büyük, kelimeler bitişik yazılır (örneğin, `MerhabaDunya`, `OgrenciBilgiSistemi`).

Sınıfın içeriği, açma (`{`) ve kapama (`}`) süslü parantezleri arasında tanımlanır. Bu parantezler, sınıfın "kapsamını" (scope) belirler.

Aşağıda, `Ornek` adında basit bir sınıf tanımı görmektesiniz:

<!-- CODE_META
id: bolum-02_kod01
chapter_id: bolum-02
kind: example
title: "Kod 1"
file: "Ornek00.java"
mainClass: Ornek00
extract: true
test: compile
github: true
qr: dual
-->

```java
// - Amaç: Java'da bir sınıfın (class) nasıl tanımlandığını göstermek.
// - Çıktı: Bu kod tek başına çalıştırıldığında herhangi bir çıktı vermez, çünkü bir main metodu içermemektedir.
// - Anahtar Kavramlar: class, süslü parantezler, PascalCase
public class Ornek {
    // Sınıfın içeriği buraya yazılır.
    // Örneğin, değişkenler, metotlar...
}

Pedagojik Not: public anahtar kelimesi, bu sınıfa diğer sınıflardan da erişilebileceğini belirtir. Java’daki erişim belirleyicileri (access modifiers) ilerleyen bölümlerde detaylıca işlenecektir. Şimdilik, ana sınıfınızı public olarak tanımlamanın standart bir uygulama olduğunu bilmeniz yeterlidir.

main Metodu ve Programın Başlangıç Noktası

Java Sanal Makinesi (JVM), bir programı çalıştırmaya başlamak için özel bir metot arar: main metodu. Bu metot, programınızın giriş noktasıdır (entry point). JVM, programı başlatmak için tam olarak aşağıdaki imzaya sahip bir metot arar:

public static void main(String[] args)

Bu imzanın her bir parçasının anlamı şudur: - public: Bu metoda her yerden erişilebilir. JVM’in metoda erişmesi için gereklidir. - static: Bu metot, sınıfa ait bir nesne oluşturmadan doğrudan çağrılabilir. JVM, programı başlatırken henüz hiçbir nesne oluşturmadığı için bu gereklidir. - void: Bu metot herhangi bir değer döndürmez (geriye değer göndermez). - main: Metodun adıdır. JVM tam olarak bu ismi arar. - String[] args: Bu, main metoduna komut satırından argümanlar (parametreler) geçirmek için kullanılan bir dizi (array) parametredir. args parametresinin adı değiştirilebilir, ancak String[] tipi zorunludur.

İşte bir main metodu içeren tam bir program:

// - Amaç: Java programının başlangıç noktası olan main metodunu göstermek.
// - Çıktı: Program çalıştırıldığında konsola "Merhaba, Java!" yazdırır.
// - Anahtar Kavramlar: main metodu, JVM, String[] args
public class IlkProgram {
    public static void main(String[] args) {
        // Programın çalıştıracağı kodlar buraya yazılır.
        System.out.println("Merhaba, Java!");
    }
}

Pedagojik Not: String[] args kısmı, programınıza dışarıdan veri aktarmak için kullanılır. Örneğin, bir kullanıcı adı veya bir dosya yolu program başlatılırken bu dizi aracılığıyla programa iletilebilir. Şimdilik bu parametrenin varlığını bilmeniz yeterlidir; detaylarına ilerleyen bölümlerde değineceğiz.

Kod Blokları ve Kapsam (Scope)

Süslü parantezler { }, kod bloklarını tanımlamak için kullanılır. Bir blok, mantıksal olarak birbirine ait kod parçalarını gruplandırır. Bir sınıfın gövdesi, bir metodun gövdesi, bir if koşulunun gövdesi gibi birçok yapı bloklardan oluşur.

Blokların en önemli özelliklerinden biri, kapsam (scope) kavramını oluşturmasıdır. Bir blok içinde tanımlanan bir değişkene, yalnızca o blok ve onun içindeki alt bloklardan erişilebilir. Blok dışından bu değişkene erişmek mümkün değildir.

Aşağıdaki örnekte, bloklar ve kapsam kavramını inceleyelim:

// - Amaç: Kod bloklarının ve değişken kapsamının (scope) nasıl çalıştığını göstermek.
// - Çıktı: Program çalıştırıldığında konsola "x = 5" ve "y = 10" yazdırır. 'x' değişkenine iç bloktan erişilebilirken, 'y' değişkenine dış bloktan erişilemez.
// - Anahtar Kavramlar: süslü parantezler, blok, scope (kapsam)
public class BlokOrnegi {
    public static void main(String[] args) {
        int x = 5; // Dış blokta tanımlanan değişken

        { // İç blok başlangıcı
            int y = 10; // İç blokta tanımlanan değişken
            System.out.println("x = " + x); // Dış bloktaki x'e erişilebilir.
            System.out.println("y = " + y); // Kendi bloğundaki y'ye erişilebilir.
        } // İç blok sonu. y değişkeni buradan sonra yok olur.

        // System.out.println("y = " + y); // HATA! y'ye buradan erişilemez. (Derleme hatası)
        System.out.println("x = " + x); // x'e hala erişilebilir.
    }
}

2.2 Yorum Satırları ve Kod Dokümantasyonu

Yorum satırları, Java derleyicisi tarafından tamamen yok sayılan, kodu açıklamak, not almak veya geçici olarak devre dışı bırakmak için kullanılan metinlerdir. İyi yazılmış yorumlar, kodun okunabilirliğini ve bakımını büyük ölçüde kolaylaştırır.

Tek Satırlık Yorumlar

Tek satırlık yorumlar, // karakterleri ile başlar ve satırın sonuna kadar devam eder. Genellikle kısa açıklamalar veya notlar için kullanılır. Ayrıca, bir kod satırını geçici olarak devre dışı bırakmak (debugging) için de sıkça kullanılır.

// - Amaç: Tek satırlık yorumların nasıl kullanıldığını göstermek.
// - Çıktı: Sadece "Program başlatılıyor..." yazdırır.
// - Anahtar Kavramlar: //, tek satırlı yorum, debugging
public class YorumOrnegi {
    public static void main(String[] args) {
        // Bu bir tek satırlık yorumdur. Derleyici bunu yok sayar.
        System.out.println("Program başlatılıyor...");

        // Aşağıdaki satır geçici olarak devre dışı bırakılmıştır.
        // System.out.println("Bu satır çalıştırılmayacak.");
    }
}

Çok Satırlı Yorumlar

Çok satırlı yorumlar, /* ile başlar ve */ ile biter. Bu iki işaretçi arasındaki tüm metinler (birden fazla satır olsa bile) yorum olarak kabul edilir. Genellikle daha uzun açıklamalar veya kodun geniş bir bölümünü geçici olarak devre dışı bırakmak için kullanılır.

// - Amaç: Çok satırlı yorumların nasıl kullanıldığını göstermek.
// - Çıktı: Sadece "İşlem tamam." yazdırır.
// - Anahtar Kavramlar: /* */, çok satırlı yorum
public class CokSatirliYorum {
    public static void main(String[] args) {
        /*
         * Bu bir çok satırlı yorumdur.
         * Birden fazla satıra yayılabilir.
         * Derleyici bu bloktaki her şeyi yok sayar.
         */
        System.out.println("İşlem tamam.");

        /* Kodun bir bölümünü devre dışı bırakmak için de kullanılabilir.
        System.out.println("Bu satır çalışmaz.");
        System.out.println("Bu da çalışmaz.");
        */
    }
}

Javadoc Yorumları

Javadoc yorumları, /** ile başlar ve */ ile biter. Bu özel yorum türü, Java kodunuz için HTML tabanlı dokümantasyon (API dokümantasyonu) oluşturmak amacıyla kullanılır. Javadoc, sınıfların, metotların ve alanların ne işe yaradığını açıklamak için standart bir yol sağlar.

Javadoc içinde @param, @return, @author, @version gibi özel etiketler (tag) kullanarak dokümantasyonu daha yapılandırılmış hale getirebilirsiniz.

// - Amaç: Javadoc yorumlarının ve etiketlerinin kullanımını göstermek.
// - Çıktı: Program çalıştırıldığında konsola "16" yazdırır.
// - Anahtar Kavramlar: /** */, @param, @return, @author
public class JavadocOrnegi {

    /**
     * Verilen bir sayının karesini hesaplar.
     *
     * @param sayi Karesi alınacak tam sayı değeri.
     * @return sayi parametresinin karesi (int).
     * @author Ali Veli
     */
    public static int kareAl(int sayi) {
        return sayi * sayi;
    }

    public static void main(String[] args) {
        int sonuc = kareAl(4);
        System.out.println(sonuc);
    }
}

Pedagojik Not: Javadoc yorumları, profesyonel Java projelerinde kodun anlaşılabilirliği ve ekip çalışması için hayati öneme sahiptir. İlerleyen dönemlerde kendi kütüphanelerinizi yazarken Javadoc kullanmayı alışkanlık haline getirmeniz, sizi ve ekibinizi büyük bir zaman kaybından kurtaracaktır.

2.3 Çıktı Komutları ve Konsol İşlemleri

Programlar genellikle kullanıcıya bilgi vermek veya işlem sonuçlarını göstermek için konsola çıktı yazdırırlar. Java’da bu işlem için en sık kullanılan araç System.out nesnesidir.

System.out.println() Metodu

System.out.println() metodu, kendisine verilen değeri (metin, sayı, vb.) konsola yazdırır ve satırı atlar (yeni bir satıra geçer). Bu, en yaygın kullanılan çıktı metodudur.

Metin (String) ifadeleri " " (çift tırnak) içine yazılır. Farklı değerleri birleştirmek için + operatörü kullanılır. Bu operatör, metinlerle sayıları birleştirdiğinde, sayıyı otomatik olarak metne dönüştürür.

// - Amaç: System.out.println() metodunun kullanımını göstermek.
// - Çıktı:
//   Merhaba Dünya!
//   Yaş: 30
// - Anahtar Kavramlar: System.out.println(), String birleştirme (+)
public class PrintlnOrnegi {
    public static void main(String[] args) {
        System.out.println("Merhaba Dünya!");
        
        int yas = 30;
        System.out.println("Yaş: " + yas); // String ile int birleştirme
    }
}

System.out.print() Metodu

System.out.print() metodu, println()’dan farklı olarak, çıktı verdikten sonra satırı atlamaz. Bir