Sobes.tech
Intern

İlkel ve referans veri tipleri arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

İlkel veri tipleri doğrudan değeri saklar, referans tipleri ise nesneye (bellekteki adres) referans (bağlantı) tutar.

İlkel tipler:

  • Sabit ve küçük bir bellek alanı kaplar.
  • Değeri kopyalanarak (değer üzerinden) iletilir.
  • Küçük harfle başlar.
  • İçerir: byte, short, int, long, float, double, boolean, char.
// İlkel tip örneği
int a = 10;
int b = a; // 10 değeri kopyalanır
b = 20;   // Sadece b değişir, a 10 kalır

Referans tipleri:

  • Nesnenin içeriğine bağlı olarak farklı bellek alanları kullanır.
  • Referans (nesne adresi) ile iletilir. Nesne üzerinde yapılan değişiklikler, ona referans eden tüm değişkenleri etkiler.
  • Genellikle büyük harfle başlar (sınıflar).
  • İçerir: sınıflar (String, Object, özel sınıflar), arayüzler, diziler.
// Referans tipi örneği
String str1 = new String("Hello");
String str2 = str1; // "Hello" nesnesine referans kopyalanır
str2 = "World";   // str2 artık yeni bir "World" nesnesine referans verir. str1 hâlâ "Hello"'ya referans eder.

// Değiştirilebilir nesne ile başka bir örnek
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Aynı nesneye referans kopyalanır
list2.add(2); // Nesneye eleman eklenir, her iki referans da güncellenmiş nesneye işaret eder
// Artık list1 [1, 2] ve list2 [1, 2] içerir

Hızlı karşılaştırma tablosu:

Özellik İlkel tipler Referans tipleri
Depolama Değer Nesneye referans
Aktarım Değere göre Referansa göre
Bellek boyutu Sabit ve küçük Değişken
Başlangıç harfi Küçük harf Genellikle büyük harf
Null olma durumu null olamaz null olabilir

İlkel tipler, bunların nesne olarak kullanılabilmesi için sarmal sınıflarına (wrapper classes) çevrilir (örneğin, int Integer'a).