0Pricing
Java Academy · Ders

this ve toString/equals/hashCode

Geçerli nesneye başvurmak için this kullanın, yararlı toString yazın ve equals ile hashCode yöntemlerini doğru biçimde uygulayın.

this ve toString/equals/hashCode, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 3 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 3 dersten oluşur.

Bu anahtar sözcüğü

Bu, geçerli nesneyi belirtir. Fields alanlarına erişmek veya başka bir kurucuyu çağırmak için kullanın. Parametre adları field adlarıyla aynı olduğunda özellikle yararlıdır ve niyetinizi açıkça ifade eder.

Okunabilir toString

toString(), bir nesnenin insanlar tarafından kolayca anlaşılabilen özetini döndürür. Kimlik ve ad gibi önemli fields alanlarını göstermek için onu geçersiz kılın. Bu, günlük kayıtlarını ve hata ayıklama çıktısını anlamayı çok kolaylaştırır.

equals ve == karşılaştırması

equals mantıksal eşitliği denetlerken == iki başvurunun aynı nesneyi gösterip göstermediğini denetler. Çoğu alan sınıfı, bellek adresine göre değil içeriğe göre karşılaştırma yapmak için equals yöntemini geçersiz kılmalıdır.

hashCode equals ile uyumlu olmalı

hashCode, equals ile tutarlı olmalıdır: a.equals(b) doğruysa a.hashCode() ile b.hashCode() eşit olmalıdır. HashSet ve HashMap'in doğru çalışması için bu kural gereklidir.

İpuçları ve tuzaklar

Eşitlik için kimlik veya e-posta gibi kararlı fields alanlarını seçin ve toString'i kısa tutun. equals ve hashCode içinde değiştirilebilir koleksiyonlar kullanmaktan kaçının. Emin olmadığınızda yöntemleri geliştirme ortamınızla oluşturun ve gözden geçirin.

Kod: bu, equals, hashCode

Örnek, içeriği aynı olan iki kişi oluşturur. equals doğru döner, hash kodları eşleşir ve bir HashSet ikinci nesneyi bulabilir.

public class Main {
  // Simple Person class to demo this, toString, equals, hashCode
  static class Person {
    private int id;
    private String name;

    // Constructor uses this to set fields
    Person(int id, String name) {
      this.id = id;       // this.id refers to the field
      this.name = name;   // name comes from the parameter
    }

    // Human friendly string
    @Override
    public String toString() {
      return "Person{id=" + id + ", name=" + name + "}";
    }

    // Logical equality: same id and same name
    @Override
    public boolean equals(Object o) {
      if (this == o) return true;                 // same reference
      if (o == null || getClass() != o.getClass()) return false;
      Person other = (Person) o;
      if (this.id != other.id) return false;
      // Compare names safely (null aware)
      if (this.name == null) return other.name == null;
      return this.name.equals(other.name);
    }

    // Hash code consistent with equals
    @Override
    public int hashCode() {
      int result = Integer.hashCode(id);
      result = 31 * result + (name == null ? 0 : name.hashCode());
      return result;
    }
  }

  public static void main(String[] args) {
    // Create two persons with the same content
    Person a = new Person(1, "Ada");
    Person b = new Person(1, "Ada");

    // toString shows readable info
    System.out.println(a);

    // equals compares content, not memory address
    System.out.println("a == b ? " + (a == b));           // false (different objects)
    System.out.println("a.equals(b) ? " + a.equals(b));   // true (same content)

    // hashCode must match for equal objects (useful in hash collections)
    System.out.println("hash(a) = " + a.hashCode());
    System.out.println("hash(b) = " + b.hashCode());

    // Example with HashSet: contains works because equals and hashCode agree
    java.util.Set<Person> set = new java.util.HashSet<>();
    set.add(a);
    System.out.println("set contains b ? " + set.contains(b)); // true
  }
}

Sözleşme denetimi

Hızlı denetim: equals yöntemini geçersiz kılarsanız başka ne yapmalısınız ve neden?

Özet

Özet: Bu, field erişimini açıklaştırır; toString hata ayıklamaya yardımcı olur; equals içeriği karşılaştırır ve hashCode koleksiyonların tutarlı kalmasını sağlar.

Sıkça Sorulan Sorular

“this ve toString/equals/hashCode” dersi ücretsiz mi?

Evet — “this ve toString/equals/hashCode” 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 3 dersten oluşur.

“this ve toString/equals/hashCode” dersinde ne öğreneceğim?

Geçerli nesneye başvurmak için this kullanın, yararlı toString yazın ve equals ile hashCode yöntemlerini doğru biçimde uygulayı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, 3 dersinin 1. dersidir.

“this ve toString/equals/hashCode” 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. this ve toString/equals/hashCode
  2. Nesne Bileşimi
  3. Bir Alanı Modelleme (UML→Koda)
← Java Academy Sayfasına Dön