0Pricing
Java Academy · Ders

Otomatik Kutulamanın Tuzakları

Null kutudan çıkarma ve == tuzakları

Otomatik Kutulamanın Tuzakları, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. 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.

Kolaylığın Tuzakları

Otomatik kutulama kodu daha temiz hâle getirir, ancak şaşırtıcı hatalara yol açabilecek dönüşümleri gizler. En büyük iki tuzak null değerinin kutudan çıkarılması ve == ile kimlik karşılaştırmasıdır.

Bu ders, her ikisinden nasıl kaçınacağınızı gösterir.

Null Değerini Kutudan Çıkarma Tuzağı

Bir sarmalayıcı null değerini tutuyorsa ve onu ilkel bir türe dönüştürerek kutusundan çıkarırsanız Java bir NullPointerException fırlatır.

Kod basit bir atama gibi göründüğü için bu durumu gözden kaçırmak kolaydır.

public class Main {
    public static void main(String[] args) {
        Integer maybe = null;
        try {
            int value = maybe;
            System.out.println(value);
        } catch (NullPointerException e) {
            System.out.println("Cannot unbox null!");
        }
    }
}

Aritmetik İşlemlerde Null

Bu tuzak ifadelerin içinde de ortaya çıkar. null değerini tutan bir sarmalayıcıyı toplamak önce onu kutusundan çıkarır; bu nedenle matematik işlemi başlamadan önce istisna fırlatılır.

public class Main {
    public static void main(String[] args) {
        Integer count = null;
        try {
            int total = count + 5;
            System.out.println(total);
        } catch (NullPointerException e) {
            System.out.println("Null in arithmetic!");
        }
    }
}

Null Değerine Karşı Korunma

Bir sarmalayıcıyı kutusundan çıkarmadan önce her zaman null olup olmadığını kontrol edin veya varsayılan bir değer sağlayın.

public class Main {
    public static void main(String[] args) {
        Integer maybe = null;
        int safe = (maybe != null) ? maybe : 0;
        System.out.println(safe);
    }
}

== Önbelleği Sürprizi

Integer.valueOf, -128 ile 127 arasındaki değerleri önbelleğe alır. Bu nedenle bu aralıktaki iki kutulanmış değer aynı nesneyi paylaşabilir ve == true döndürür.

public class Main {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 100;
        System.out.println(a == b);
    }
}

Önbellek Aralığının Dışında

Önbellek aralığının üzerindeki her kutulama farklı bir nesne oluşturur. Bu durumda == başvuruları karşılaştırır ve sayılar eşit olsa bile false döndürür.

public class Main {
    public static void main(String[] args) {
        Integer a = 200;
        Integer b = 200;
        System.out.println(a == b);
    }
}

Her Zaman equals Kullanın

Sarmalayıcı türlerde == nesne kimliğini karşılaştırdığı için gerçek sayısal değerleri karşılaştırmak üzere .equals() kullanmalısınız.

public class Main {
    public static void main(String[] args) {
        Integer a = 200;
        Integer b = 200;
        System.out.println(a.equals(b));
    }
}

İlkel Türle == Kullanmak

== işleminin bir tarafı ilkel tür olduğunda Java, sarmalayıcıyı kutudan çıkarır; bu nedenle karşılaştırma değere göre yapılır. Bu yöntem güvenilirdir, ancak sarmalayıcı null ise yine hata oluşabilir.

public class Main {
    public static void main(String[] args) {
        Integer a = 200;
        int b = 200;
        System.out.println(a == b);
    }
}

Döngülerde Gizli Kutulama

Bir döngü biriktiricisini sarmalayıcı tür olarak tanımlamak, her yinelemede yeni bir nesne oluşturulmasına neden olur. Aşağıda long yerine Long kullanmak, değerin tekrar tekrar kutulanmasına yol açardı. İlkel türü tercih edin.

public class Main {
    public static void main(String[] args) {
        long sum = 0;
        for (int i = 0; i < 1000; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

Map.get Null Döndürür

Gerçek uygulamalarda sık görülen bir hata şudur: Map.get, anahtar bulunamadığında null döndürür. Bu sonucu bir int türüne kutudan çıkarmak hata oluşturur. Bunun yerine getOrDefault kullanın.

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        int score = scores.getOrDefault("missing", 0);
        System.out.println(score);
    }
}

Güvenli Kalma

İki alışkanlık, otomatik kutulama hatalarının çoğunu önler: null olabilecek bir değeri asla kutudan çıkarmayın ve sarmalayıcı değerleri == yerine her zaman .equals() ile karşılaştırın.

Hızlı Kontrol

Otomatik kutulama tuzakları hakkındaki farkındalığınızı sınayın.

Özet

Otomatik kutulamanın başlıca tuzaklarını öğrendiniz:

  • null bir sarmalayıcıyı kutudan çıkarmak NullPointerException oluşturur
  • Bir null denetimi veya varsayılan değerle güvence sağlayın
  • Sarmalayıcılarda == başvuruları karşılaştırır; -128 ile 127 arasında önbellekleme yapılır
  • Değer karşılaştırması için her zaman .equals() kullanın
  • Eşleme aramalarında null değerinden kaçınmak için getOrDefault kullanın

Sıkça Sorulan Sorular

“Otomatik Kutulamanın Tuzakları” dersi ücretsiz mi?

Evet — “Otomatik Kutulamanın Tuzakları” 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.

“Otomatik Kutulamanın Tuzakları” dersinde ne öğreneceğim?

Null kutudan çıkarma ve == tuzakları 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 4. dersidir.

“Otomatik Kutulamanın Tuzakları” 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

  1. İlkel ve Sarmalayıcı Türler
  2. Otomatik Kutulama ve Kutudan Çıkarma
  3. Ayrıştırma ve Valueof
  4. Otomatik Kutulamanın Tuzakları
← Java Academy Sayfasına Dön