Java Veri Tipleri: Primitive ve Reference Tipler Arasindeki Kritik Farklar

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Java Veri Tipleri: Stack ve Heap Savaşları



1. Bellek Yerleşimi: Stack vs Heap​


Bu iki tip arasındaki en temel fark, verinin bellekte nerede tutulduğudur.

Primitive Tipler: Verinin kendisi doğrudan Stack adı verilen, hızlı erişimli küçük bellek bölgesinde tutulur.

Reference Tipler: Verinin asıl içeriği (nesne) Heap bölgesinde tutulurken, Stack bölgesinde sadece o nesneye giden adres (referans) saklanır.

2. Primitive (İlkel) Tipler​


Java'da önceden tanımlanmış 8 tane ilkel tip vardır. Bunlar nesne değildir, metotları yoktur ve sadece saf değer taşırlar.

Java:
int sayi = 10;       // Stack'te doğrudan 10 değeri saklanır.
boolean aktif = true;
char harf = 'J';

Kritik Özellik: Primitive tiplerle bir işlem yaptığınızda, değerin bir kopyası oluşturulur. Birini değiştirmek diğerini etkilemez.

3. Reference (Referans) Tipler​


Diziler, Sınıflar (Classes) ve Interface'ler bu gruba girer. En bilinen örneği String ve Scanner sınıflarıdır.

Java:
int[] sayilar = {1, 2, 3}; // 'sayilar' değişkeni Stack'tedir ama dizi Heap'tedir.
String isim = "Gemini";    // Bir nesne oluşturulur.

Kritik Özellik: İki referans değişkeni birbirine eşitlendiğinde, değer kopyalanmaz; adres kopyalanır. Yani iki değişken de Heap'teki aynı nesneyi işaret eder. Birinden yapılan değişiklik diğerini de bozar!

4. Temel Farklar Tablosu​


ÖzellikPrimitive TiplerReference Tipler
Bellek AlanıStackHeap
Varsayılan Değer0, false veya \u0000null (Tanımsız)
BoyutTipe göre sabit (örn: int 4 byte)Değişken (Nesne içeriğine bağlı)
Metot ErişimiYok (sayi.toString() diyemezsiniz)Var (isim.toUpperCase() diyebilirsiniz)

5. Kod Üzerinde Kritik Örnek​


Aşağıdaki kod parçası, mülakatlarda sıkça sorulan "değer mi, referans mı?" sorusunun cevabıdır:

Java:
// Primitive Örneği
int a = 5;
int b = a;
b = 10;
System.out.println(a); // Çıktı: 5 (a etkilenmedi)

// Reference Örneği
int[] dizi1 = {1, 2, 3};
int[] dizi2 = dizi1;
dizi2[0] = 99;
System.out.println(dizi1[0]); // Çıktı: 99 (dizi1 de değişti!)



Sonuç

Primitive tipler hız ve basitlik için varken; Reference tipler karmaşık veri yapıları ve nesne yönelimli programlamanın (OOP) esnekliği için vardır. Bellek yönetimini bilmek, özellikle büyük verilerle çalışırken "neden bu veri durduk yere değişti?" veya "uygulamam neden çok RAM tüketiyor?" sorularının cevabını bulmanızı sağlar.
 
Geri
Üst