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
- this ve toString/equals/hashCode
- Nesne Bileşimi
- Bir Alanı Modelleme (UML→Koda)