Sobes.tech
Junior

Java'da equals() ve toString() metodları ne için kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

equals() yöntemi, nesneleri mantıksal eşdeğerlik açısından karşılaştırmak için kullanılır, yani iki nesnenin aynı değeri veya varlığı temsil edip etmediğini belirler, bellekte fiziksel olarak aynı nesne olup olmadıklarına bakılmaksızın.

toString() yöntemi, nesnenin dize temsiliğini almak için kullanılır. Varsayılan olarak, sınıf adını ve onun karma kodunu içeren bir dize döndürür, ancak genellikle nesnenin durumu hakkında daha bilgilendirici bir açıklama sağlamak için yeniden tanımlanır.

public class ExampleObject {
    private int id;
    private String name;

    public ExampleObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Referans karşılaştırması
        if (o == null || getClass() != o.getClass()) return false; // Tür ve null kontrolü
        ExampleObject that = (ExampleObject) o; // Tür dönüşümü
        return id == that.id && // Anlamlı alanlar karşılaştırması
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // equals() metodunu yeniden tanımlarken hashCode()'u da yeniden tanımlamak zorunludur
        return Objects.hash(id, name);
    }

    @Override
    public String toString() {
        return "ExampleObject{" +
               "id=" + id +
               ", name='" + name + '\'' +
               '}';
    }

    public static void main(String[] args) {
        ExampleObject obj1 = new ExampleObject(1, "Test");
        ExampleObject obj2 = new ExampleObject(1, "Test");
        ExampleObject obj3 = new ExampleObject(2, "Another");

        // equals() kullanımı
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - mantıksal olarak eşdeğer
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - farklı nesneler

        // toString() kullanımı
        System.out.println("obj1 toString(): " + obj1.toString()); // Nesnenin dize temsili gösterilir
    }
}