İlkel Türler ve Başvuru Türleri
Java'da ilkel türlerle başvuru türleri arasındaki temel farkı anlayın.
İlkel Türler ve Başvuru Türleri, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
İlkel ve Referans Türler
Java'da veri türleri iki temel kategoriye ayrılır: ilkel türler ve referans türleri. Aralarındaki farkı anlamak, doğru ve verimli Java kodu yazmak için çok önemlidir.
Sekiz İlkel Tür
Java'da tam olarak sekiz ilkel tür vardır:
byte(8 bitlik tam sayı)short(16 bitlik tam sayı)int(32 bitlik tam sayı)long(64 bitlik tam sayı)float(32 bitlik ondalık sayı)double(64 bitlik ondalık sayı)char(16 bitlik Unicode karakteri)boolean(doğru/yanlış)
İlkel türler değeri doğrudan bellekte tutar — nesne ek yükü yoktur.
int age = 25;
double price = 19.99;
boolean active = true;
char grade = 'A';
long population = 8_000_000_000L;
System.out.println(age); // 25
System.out.println(price); // 19.99
System.out.println(active); // trueReferans Türleri
Bir referans türü, öbekteki bir nesneyi gösteren bir bellek adresini (referansı) depolar. Bunlara şunlar dahildir:
- Sınıflar (ör.
String,Scanner) - Diziler (ör.
int[]) - Arayüzler
- Numaralandırmalar ve kayıtlar
Değişken nesneyi tutmaz — nesneye giden bir işaretçiyi tutar.
String name = "Alice"; // reference to a String object
int[] scores = {90, 85, 92}; // reference to an array object
// name holds a reference, not the characters directly
System.out.println(name.length()); // 5
System.out.println(scores.length); // 3Yığın ve Öbek Belleği
İlkel değişkenler, yöntem çağrılarına bağlı hızlı ve kısa ömürlü bellek olan yığında depolanır.
Referans türündeki nesneler, çöp toplama tarafından yönetilen daha büyük ve uzun ömürlü bellek olan öbekte yaşar. Referansın kendisi (adres) yığındadır.
// Stack: holds the int value directly
int x = 42;
// Stack: holds reference; Heap: holds the Person object
class Person {
String name;
int age;
}
Person p = new Person(); // p is a reference on stack, object on heap
p.name = "Bob";
p.age = 30;Boş Değer: Mevcut Olmayan Referans
Referans değişkenlerine null atanabilir; bu, hiçbir nesneyi göstermedikleri anlamına gelir. İlkel türler null olamaz — her zaman bir değerleri vardır.
Boş bir referansa erişmek, Java'daki en yaygın çalışma zamanı hatalarından biri olan NullPointerException (NPE) hatasına yol açar.
String s = null;
// int n = null; // Compile error — primitives can't be null
try {
System.out.println(s.length()); // NullPointerException!
} catch (NullPointerException e) {
System.out.println("Caught NPE: reference was null");
}Kopyalama Davranışı: İlkel Türler
Bir ilkel değişkeni başka bir değişkene atadığınızda Java değeri kopyalar. Birini değiştirmek diğerini etkilemez — tamamen bağımsızdırlar.
int a = 10;
int b = a; // b gets a copy of the value 10
b = 20; // changing b does NOT affect a
System.out.println(a); // 10
System.out.println(b); // 20Kopyalama Davranışı: Referanslar
Bir referans değişkenini başka bir değişkene atadığınızda, her iki değişken de aynı nesneyi gösterir. Nesneyi bir referans üzerinden değiştirmek, diğer referans üzerinden de görünür.
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // arr2 points to the SAME array
arr2[0] = 99; // modifies the shared array
System.out.println(arr1[0]); // 99 — arr1 sees the change too!
System.out.println(arr2[0]); // 99Sarmalayıcı Sınıflar: İlkel Türleri Kutulama
Her ilkel türün java.lang içinde karşılık gelen bir sarmalayıcı sınıfı vardır:
int→Integerdouble→Doubleboolean→Booleanchar→Character
Sarmalayıcılar, ilkel türleri nesne olarak kullanmanızı sağlar — List<Integer> gibi koleksiyonlar için bu gereklidir.
Integer boxed = Integer.valueOf(42); // explicit boxing
int unboxed = boxed.intValue(); // explicit unboxing
// Autoboxing / auto-unboxing (Java does this automatically)
Integer auto = 100; // autoboxed
int val = auto; // auto-unboxed
System.out.println(Integer.MAX_VALUE); // 2147483647
System.out.println(Double.MIN_VALUE); // 5.0E-324Otomatik Kutulamanın Tuzakları
Otomatik kutulama kullanışlıdır ancak fark edilmesi zor hatalara yol açabilir. Tam sayı sarmalayıcısı -128 ile 127 arasındaki değerleri önbelleğe alır — bu aralığın dışında == değerleri değil, referansları karşılaştırır.
Sarmalayıcı nesneleri karşılaştırmak için her zaman .equals() kullanın.
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true (cached)
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false (different objects!)
System.out.println(c.equals(d)); // true (correct comparison)Yöntemlere Geçirme: Değerle Geçirme
Java her zaman değerle geçirme kullanır. İlkel türlerde değer kopyalanır. Referanslarda referansın (adresin) kendisi kopyalanır — her ikisi de aynı nesneyi gösterir, ancak yöntem içinden çağıranın değişkenine yeniden atama yapamazsınız.
static void doubleValue(int n) {
n = n * 2; // only modifies the local copy
}
static void clearArray(int[] arr) {
arr[0] = 0; // modifies the shared object
}
int x = 5;
doubleValue(x);
System.out.println(x); // still 5
int[] nums = {10, 20, 30};
clearArray(nums);
System.out.println(nums[0]); // 0 — object was mutatedPratik Özet Tablosu
İlkel ve referans türlerini karşılaştıran hızlı başvuru:
- Depolama: ilkel → yığın değeri; referans → yığın adresi + öbek nesnesi
- Varsayılan değer: ilkel → 0/false/\u0000; referans → boş değer
- Boş olabilir: ilkel → Hayır; referans → Evet
- Atama kopyalar: ilkel → değeri; referans → adresi
- Koleksiyonlarda: ilkel türler sarmalayıcı sınıflara ihtiyaç duyar
Kısa Kontrol
Aşağıdaki kodu çalıştırdığınızda ne olur?
Integer x = 200; Integer y = 200; System.out.println(x == y);
Özet: İlkel ve Referans Türler
Bu dersten çıkarılacak temel sonuçlar:
- Java'da doğrudan yığında depolanan 8 ilkel tür vardır
- Referans türleri bir öbek nesnesinin adresini depolar; değişken adresi tutar
- İlkel türler değerleriyle, referanslar adresleriyle kopyalanır
- Referans değişkenleri boş olabilir; ilkel türler olamaz
- Sarmalayıcı sınıflar ilkel türleri nesne olarak kutular
- Java her zaman değerle geçirme yapar — referanslar geçirilirken bile
Sıkça Sorulan Sorular
“İlkel Türler ve Başvuru Türleri” dersi ücretsiz mi?
Evet — “İlkel Türler ve Başvuru Türleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“İlkel Türler ve Başvuru Türleri” dersinde ne öğreneceğim?
Java'da ilkel türlerle başvuru türleri arasındaki temel farkı anlayın. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“İlkel Türler ve Başvuru Türleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İlkel Türler ve Başvuru Türleri
- Genişletme ve Daraltma Dönüşümleri
- instanceof İşleci
- Uygulamada Tür Dönüştürme